解析 JSON 数据时如何摆脱 <null> 对象

Posted

技术标签:

【中文标题】解析 JSON 数据时如何摆脱 <null> 对象【英文标题】:How to get rid of <null> objects when Parsing JSON data 【发布时间】:2014-06-26 20:19:09 【问题描述】:

目前,我有一个有效的 Web 服务调用,它返回我搜索的最便宜对象的标题。例如,如果我搜索“书”,它将返回我所在地区最便宜的书。但是,有时,我会得到这样的对象:

2014-06-26 13:14:12.008 FindTheCheapestOne[2244:60b] The Little Book of Champagne
2014-06-26 13:14:12.009 FindTheCheapestOne[2244:60b] The Holy Bible
2014-06-26 13:14:12.010 FindTheCheapestOne[2244:60b] <null>
2014-06-26 13:14:12.010 FindTheCheapestOne[2244:60b] Books of the Hebrew Bible (Study      Guide): Book of Proverbs, Book of Job, Book of Esther, Book of Jeremiah, Book of Isaiah, Song of Songs
2014-06-26 13:14:12.010 FindTheCheapestOne[2244:60b] Book of Job : A Short Reading
2014-06-26 13:14:12.010 FindTheCheapestOne[2244:60b] Book of Jeremiah

当我得到这些对象时,我将它们存储到一个数组中,并将这个数组传递给我的 TableViewController。但是,我无法传递这些对象,因此我得到了 SIGABRT。

这是我尝试修复它的方法:

 for (NSDictionary *theItem in itemCallArray)
    
        NSString *titleString = theItem[@"title"];

        if (titleString !=NULL)
        

        [titleArray addObject:titleString];

        NSLog(@"%@", titleString);

        
    

    ResultsTableViewController *tableVC = (ResultsTableViewController *)segue.destinationViewController;
    [tableVC setArray:titleArray];


我仍然得到 SIGABRT,但它并不能解决问题。

所有帮助将不胜感激,并在此先感谢:)

【问题讨论】:

你得到的不是nil,而是一个NSNull对象。 【参考方案1】:

检查 NULL 值的一个很好的测试是:

if (title == (id)[NSNull null] || title.length == 0 ) 

希望这会有所帮助。快乐编码:)

【讨论】:

我不再得到任何空对象,但现在它说由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[NSNull 长度]: 啊,没关系,我编辑了你的答案: if (titleString != (id)[NSNull null] && titleString.length != 0 ) 现在它正在工作。我会接受你的回答,不管我是否指出了正确的方向:)

以上是关于解析 JSON 数据时如何摆脱 <null> 对象的主要内容,如果未能解决你的问题,请参考以下文章

尝试解析 JSON 响应时获取 <null>

在grails中解析JSON时如何获取真正的空值而不是JSONObject.NULL值

如何在使用 request.data 时摆脱 Python 中的“Json 文件导入错误”?

ios 解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault的问题

【Lua】cjson解析null

js处理json数据报错