JSONString 与 JSONData 与字典或者数组互相转化

简介:

JSON

JSON相关的,数据彼此间的转化进行了简单地封装,源码如下,支持arc与非arc

YXJSON.h + YXJSON.m

//
//  YXJSON.h
//
//  JSONString 与 JSONData 与 字典或者数组互相转化
//
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface YXJSON : NSObject

/**
 将字典或者数组转换为JSON格式字符串
 
 @return JSON格式字符串
 */
+ (NSString *)JSONStringWithDictionaryOrArray:(id)dictionaryOrArray;

/**
 将字典或者数组转换为JSON的Data
 
 @return JSON的Data
 */
+ (NSData *)JSONSDataWithDictionaryOrArray:(id)dictionaryOrArray;

/**
 将JSON格式字符串转换为字典或者数组
 
 @return 字典或者数组
 */
+ (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString;

/**
 将JSON的Data转换为字典或者数组
 
 @return 字典或者数组
 */
+ (id)dictionaryOrArrayWithJSONSData:(NSData *)jsonData;

@end


//
//  YXJSON.m
//
//  JSONString 与 JSONData 与 字典或者数组互相转化
//
//  Copyright (c) 2014年 YouXian. All rights reserved.
//

#if __has_feature(objc_arc)
#define YX_release(obj)
#define YX_autorelease(obj)
#else
#define YX_release(obj)      [obj release]
#define YX_autorelease(obj)  [obj autorelease]
#endif

#import "YXJSON.h"

@implementation YXJSON

+ (NSString *)JSONStringWithDictionaryOrArray:(id)dictionaryOrArray
{
    if (dictionaryOrArray == nil)
    {
        return nil;
    }
    
    //options: Pass 0 if you don't care about the readability of the generated string
    NSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArray
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:nil];
    
    if (data == nil)
    {
        return nil;
    }
    
    NSString *string = [[NSString alloc] initWithData:data
                                             encoding:NSUTF8StringEncoding];
    YX_autorelease(string);
    
    return string;
}

+ (NSData *)JSONSDataWithDictionaryOrArray:(id)dictionaryOrArray
{
    if (dictionaryOrArray == nil)
    {
        return nil;
    }
    
    //options: Pass 0 if you don't care about the readability of the generated string
    NSData *data = [NSJSONSerialization dataWithJSONObject:dictionaryOrArray
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:nil];
    return data;
}

+ (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString
{
    if (jsonString == nil)
    {
        return nil;
    }
    
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    
    return [NSJSONSerialization JSONObjectWithData:jsonData
                                           options:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainers
                                             error:nil];
}

+ (id)dictionaryOrArrayWithJSONSData:(NSData *)jsonData
{
    if (jsonData == nil)
    {
        return nil;
    }
    
    return [NSJSONSerialization JSONObjectWithData:jsonData
                                           options:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainers
                                             error:nil];
}

@end

没有将其单独的封装到 NSString NSData NSArray NSDictionary 相关类目中,实际上用类目的方式使用更加方便,有需求可以自己弄,但文件多较为繁琐,本人不习惯.

目录
相关文章
|
6月前
|
存储 JavaScript 前端开发
JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)
【6月更文挑战第25天】JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)。
41 2
|
7月前
|
存储 算法 Java
Java数组与集合的深入解析
Java数组与集合的深入解析
62 0
|
7月前
|
存储 索引
DAY-2 | 哈希思想:求字符串包含的字符集合
这是一个关于代码实现的问题,主要展示了两种利用哈希思想去除字符串中重复字符的方法。第一种方法使用了`boolean[] flg`数组来标记字符是否出现过,遍历字符串时,如果字符未出现则添加到结果并标记为已出现。第二种方法使用`char[] ch`数组直接存储字符出现状态,先遍历一次字符串记录出现过的字符,再遍历一次输出未标记的字符。
34 0
数组与集合的转换
数组与集合的转换
58 0
|
存储
04-数组和元祖数据类型
04-数组和元祖数据类型
72 0
|
存储 索引
数组与字符串的关系【了解一下】
数组与字符串的关系【了解一下】
127 0
元组和列表转换成字典
元组和列表转换成字典
60 0
数组、字符串、集合的相互转换
数组、字符串、集合的相互转换
71 0
字符串&列表&元组&字典之间互转
字符串&列表&元组&字典之间互转
逆向操作,把被压平的字典还原成嵌套字典
逆向操作,把被压平的字典还原成嵌套字典
93 0