iOS 后台返回json解析出现的null的解决办法
来源:互联网 发布:linux文件权限 编辑:程序博客网 时间:2024/05/18 00:02
在后台返回值为Null为空时,我们代码没有判断时,程序就会崩溃。当时一直很疑惑是为啥,后来发现是数据问题,由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据。当我们通过一些第三方数据解析库解析数据后,就会是下图这种数据格式。null既不是字符串也不是nil所以我们有些判断是没用的。
解析成对象之后,如果直接向这个对象发送消息(length,count 等等)就会直接崩溃。提示错误为
-[NSNull length]: unrecognized selector sent to instance 0x388a4a70
##解决办法 1.对取值对象类型判断。缺点是太过繁琐,每次都要写。
#define kDictIsEmpty(dic) ([dic isKindOfClass:[NSNull class]])//宏if (![@"你要取的值" isKindOfClass:[NSNull class]]){//数据}
2.字符串匹配。在获取到服务器返回的Json时(返回结果是string对象)通过stringByReplacingOccurrencesOfString方法,替换"null"为"空字符",然后解析。不过通过这个方法也有可能导致数据无法解析
json = [jsonStr stringByReplacingOccurrencesOfString:@":null" withString:@""];
3.解析时把null 类型替换成nil。
//有返回值的宏#define isToNull(value) \({\ id tmp;\ if (![value isKindOfClass:[NSNull class]])\ tmp = value;\ else tmp = nil;\ (tmp);\})\//调用方法label.text = isToNull(dic[@"data"]);
4.如果使用是AFNetwork做网络请求的话,可以用以下代码,会自动去除空值
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];AFJSONResponseSerializer *response = [AFJSONResponseSerializer serializer];response.removesKeysWithNullValues = YES;//去除空值manager.responseSerializer = response;//申明返回的结果是json类
去除前
去除后 所有为空的键值对都不会自动去除
5.最有效而且简单的方法。使用国外一位大牛写的Category,叫做NullSafe ,在运行时操作,把空值置为nil,而nil是安全的,可以向nil对象发送任何message而不会奔溃。具体使用方法项目有说明
NullSafe链接
阅读全文
0 1
- iOS 后台返回json解析出现的null的解决办法
- iOS中json解析出现的null,nil,NSNumber的解决办法
- IOS 返回JSON数据中存在NULL的解决办法
- ios中json解析出现的null问题
- iOS中json解析出现的null问题
- ios中json解析出现的null问题
- ios中json解析出现的null问题
- ios中json解析出现的null问题
- ios中json解析出现的null问题
- ios中json解析出现的null问题
- ios中json解析出现的null问题
- iOS --json解析出现null
- springmvc后台返回json出现的一系列问题
- iOS开发中后台返回null,<null>字段的处理
- 后台返回的json前端如何解析
- Json-simple解析Json文件返回null的问题解决
- iOS中json解析出现的null,nil,NSNumber的问题
- iOS 去除后台返回的数据的null值
- Android内存优化
- MySQL InnoDB存储结构
- 凸包(判多边形的凹凸性)
- 【知了堂学习笔记】Java中static关键字的一些简单使用方法
- Java操作Json
- iOS 后台返回json解析出现的null的解决办法
- Android轻量级框架XSnow
- shell基础:脚本执行方式
- 夜灵的Html笔记Day04——CSS3basic
- Java设计模式之代理模式
- POJ 3667 Hotel & HDU 2871 Memory Control 线段树区间合并
- VMWare桥接模式无法浏览外网解决方法
- cell 上下非对称margin新方式
- 利用urllib和BeautifulSoup爬取维基百科的词条