美文网首页
关于json中null的问题

关于json中null的问题

作者: _会飞的鱼 | 来源:发表于2016-04-23 21:47 被阅读134次

    在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式。

    问题现象
    但是几个项目下来一直遇到一个坑爹的问题,程序在获取某些数据之后莫名崩溃。其实很早就发现了原因:由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据:

    "somevalue":null
    通过JsonKit 这个第三方库解析出来的数据就成了

    somevalue = "";
    这个数据类型不是nil 也不是 String。 解析成对象之后,如果直接向这个对象发送消息(eg:length,count 等等)就会直接崩溃。提示错误为:

    -[NSNull length]: unrecognized selector sent to instance 0x388a4a70
    解决方法
    其实一直没有找到完美的解决办法,坑了我很久。

    1、最开始的解决方法就是为了应付当前遇到的崩溃,看看哪个字段可能为空,那么就对该字段使用前进行判断,通过崩溃时的错误提示可以看出,这样的字段解析成的对象是 NSNull 类型的,所以可以直接判断是不是此类型:

    4、如果你使用AFNetwork 这个库做网络请求的话,可以用以下代码,自动帮你去掉这个讨厌的空值

    self.removesKeysWithNullValues = YES;
    5、终极方案
    终于找到了一劳永逸的方案,牛逼的老外写了一个Category,叫做NullSafe ,在运行时操作,把这个讨厌的空值置为nil,而nil是安全的,可以向nil对象发送任何message而不会奔溃。这个category使用起来非常方便,只要加入到了工程中就可以了,你其他的什么都不用做,对,就是这么简单。详细的请去Github上查看;
    https://github.com/nicklockwood/NullSafe

    相关文章

      网友评论

          本文标题:关于json中null的问题

          本文链接:https://www.haomeiwen.com/subject/liffrttx.html