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 相关类目中,实际上用类目的方式使用更加方便,有需求可以自己弄,但文件多较为繁琐,本人不习惯.