NSDictionary转换成JSON字符串
来源:互联网 发布:特蕾莎修女知乎 编辑:程序博客网 时间:2024/03/29 21:04
普通情况下,你可能会用一个NSDictionary的分类去做NSDictionary转JSON,如下代码:
NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];if (! jsonData) { return @"{}";} else { return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];}
然而,NSDictionary装的数据类型鱼龙混杂,有可能是NSDate
,NSNumber
,NSValue
等Objective-C对象,而[NSJSONSerialization dataWithJSONObject:options:error:]
这个方法是不能解析这些对象的,如果有这些对象,则会导致crash。所以我们应该在调用NSJSONSerialization
之前加一步,将所有数据处理成NSString
,代码如下:
NSError *error = nil;NSData *jsonData = nil;if (!self) { return nil;}NSMutableDictionary *dict = [NSMutableDictionary dictionary];[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { NSString *keyString = nil; NSString *valueString = nil; if ([key isKindOfClass:[NSString class]]) { keyString = key; }else{ keyString = [NSString stringWithFormat:@"%@",key]; } if ([obj isKindOfClass:[NSString class]]) { valueString = obj; }else{ valueString = [NSString stringWithFormat:@"%@",obj]; } [dict setObject:valueString forKey:keyString];}];jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];if ([jsonData length] == 0 || error != nil) { return nil;}NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];return jsonString;
这样就NSDictionary转JSON就不会crash了,同理,NSArray
也应该这样做。
0 0
- NSDictionary转换成JSON字符串
- Json字符串转换为NSDictionary
- Json 转换成 NSDictionary
- nsdictionary ,nsarray 和 json 字符串 的转换
- NSDictionary转换成json格式的数据
- json的NSData 转换成NSDictionary
- swift将json数据转换成NSDictionary
- ios NSDictionary/JSON转换
- json字符串 转NSDictionary
- NSDictionary或NSArray与JSON字符串相互转换
- NSDictionary或NSArray与JSON字符串相互转换
- Swift JSON 字符串 和 对象(NSArray,NSDictionary) 相互转换
- NSDictionary或NSArray与JSON字符串相互转换
- iOS NSDictionary JSON 相互转换
- 处理本地JSON文件,将data数据转换成NSDictionary
- ios json 与JSON ,NSDictionary相互转换
- 字符串转换成json
- Json转换成字符串
- servlet是线程安全的吗
- weblogic问题整理
- jquery mobile 入门5 (预加载与缓存页面)
- 软工大作业·源物语(一)
- 【Java开发者自学笔记】从A至Z的路径规划
- NSDictionary转换成JSON字符串
- Android VectorDrawable与SVG
- 使用iphone作为远程仓库的方案
- 使用HttpClient和WebRequest时POST一个对象的写法
- c#---产生随机数
- Deepin linux下apache安装
- 234234
- 如何在ubuntu 12.04安装eclipse
- BestCoder Round #74 (div.2 d) hdu5638 Toposort 【线段树】