简介:
NSJSONSerialization 可以将 JSON 转换为 OC 对象或将 OC 对象转为 JSON 数据。
可以被转为 JSON 的对象具有以下属性:
- 对象为 NSArray 或 NSDictionary;
- 所有对象都是
NSString
,NSNumber
,NSArray
,NSDictionary
, orNSNull
.的实例; - 字典的键值必须为
NSString
类型; - Numbers 不能是非数字或无穷大。
常用用法:
1.OC 对象 转为 JSON 类型数据
/**
* @brief OC对象转为JSON数据
*
* @param obj 指定要转换的数据
* @param opt 指定枚举值 通常使用kNilOptions
* @param error 错误
*
* @return 返回转换的JSON数据
*/
+ (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
/**
* @brief 判断OC对象能否转为JSON数据
*
* @param obj 指定要转换的数据
*
* @return 返回结果
*/
+ (BOOL)isValidJSONObject:(id)obj;
例如:NSDictionary转为JSON数据
NSDictionary *dict = @{@"Adfewefwefwfeewe":@"1121314", @"Bfewfwef":@"22345", @"Cfewfw":@"313245g"};
// 判断 object 能否转为 JSON 数据
NSData *dataDict = nil;
if ([NSJSONSerialization isValidJSONObject:dict]) {
dataDict = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil];
NSLog(@"%@", dataDict);
}
2.JSON类型数据转为OC对象
/**
* @brief JSON类型数据转为OC对象
*
* @param data 指定要转的数据
* @param opt 指定枚举值
* @param error 错误
*
* @return 返回转换结果NSArray或NSDictionary
*/
+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
例如:JSON类型数据转为OC对象
id result = [NSJSONSerialization JSONObjectWithData:dataDict options:kNilOptions error:nil];
if ([result isKindOfClass:[NSDictionary class]]) {
NSDictionary *resultDict = (NSDictionary *)resultDict;
}
注:本例中均使用NSDictionary作为比较!其他对象转换自行测试!
参考文档: