ios的NSJSONSerialization解析json数字时的错误
2018-02-05 13:18
495 查看
写了近两年的android 自认为技术成长还不错 最近却被老大说看着没什么进步 没什么进步。。。好吧 所以要求来写ios了 把安卓端上的图片处理移植到苹果上 其实不大想写 可是这小公司实在没什么的了 废话了
OC的NSJSONSerialization在解析json时,遇到数字,貌似有个转换错误和精度问题
现象
在执行上面这段代码时总是偶尔崩溃,几率还很高,多番debug调试,发现是name字段有问题,有时是NSString,有时是NSNumber。当是NSNumber时就崩溃了
分析
json数据是通过NSJSONSerialization JSONObjectWithData解析成的字典,结果在dic[@”content_id”]解析出name时出错,但是在这句代码执行上却不奔溃报错,这与java的android貌似不一样啊,感觉oc好多时候都看着有问题,但运行ios应用的时候不一定奔溃。。。不过在执行BOOL isLoad = [userDefaults boolForKey:name]时boolForKey不接受NSNumber类型崩溃了。这时要把代码改成下面这样
解决
没有崩溃了
再一个数据精度问题
当json数据带有这样的:{“price” : “666.66”},浮点小数数据时,解析会出现问题,要明确转换为doubleValue类型
OC的NSJSONSerialization在解析json时,遇到数字,貌似有个转换错误和精度问题
现象
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; BOOL isLoad = [userDefaults boolForKey:name];
在执行上面这段代码时总是偶尔崩溃,几率还很高,多番debug调试,发现是name字段有问题,有时是NSString,有时是NSNumber。当是NSNumber时就崩溃了
分析
//json局部数据这样的:{"content_id" : "666"}
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSArray *dicData = dic[@"data"];
for (NSMutableDictionary *dic in dicData) {
NSString name = dic[@"content_id"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; BOOL isLoad = [userDefaults boolForKey:name];
}
json数据是通过NSJSONSerialization JSONObjectWithData解析成的字典,结果在dic[@”content_id”]解析出name时出错,但是在这句代码执行上却不奔溃报错,这与java的android貌似不一样啊,感觉oc好多时候都看着有问题,但运行ios应用的时候不一定奔溃。。。不过在执行BOOL isLoad = [userDefaults boolForKey:name]时boolForKey不接受NSNumber类型崩溃了。这时要把代码改成下面这样
解决
没有崩溃了
//json局部数据这样的:{"content_id" : "666"} //NSString name = dic[@"content_id"];会产生类型错误 //虽然是"666"这样的数字字符串,但还是要当成id类型stringWithFormat一下 NSString name = [NSString stringWithFormat:@"%@",dic[@"content_id"]];
再一个数据精度问题
当json数据带有这样的:{“price” : “666.66”},浮点小数数据时,解析会出现问题,要明确转换为doubleValue类型
NSString *value=[NSString stringWithFormat:@"%f",[dic[@"price"] doubleValue]];
相关文章推荐
- iOS之NSJSONSerialization对json解析
- iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)
- ios中使用 NSJSONSerialization对 json数据的解析
- iOS中json解析你还停留在JSONKit吗?NSJSONSerialization和JSONKit性能比较
- iOS 系统自带JSON解析,NSJSONReadingOptions参数解读
- 【转】NSJSONSerialization解析JSON数据
- IOS json 解析遇到错误问题解决办法
- 【转】NSJSONSerialization解析JSON数据
- 系统自带的NSJSONSerialization解析json文件
- 封装系统JSON解析(YHJSONSerialization),适合IOS 5.0以上
- iOS的alamofire框架的json解析方法,服务器传过来的json格式一定要是标准的格式,否则会报以下错误
- NSJSONSerialization JSONObjectWithData options的解析转论坛
- JSON解析 ---- NSJSONSerialization介绍
- NSJSONSerialization解析JSON数据 ----JSON->NSData/NSData->JSON
- JSON解析之NSJSONSerialization
- 【转】NSJSONSerialization解析JSON数据
- iOS JSON解析 NSJSONReadingMutableContainers的作用:
- IOS JSON解析之JSONKit使用
- IOS中Json解析的四种方法
- IOS解析json报错-[__NSCFString objectFromJSONString]: unrecognized selector sent to 解决办法