您好,我正在使用TouchJSON来反序列化一些JSON。我过去一直在使用它,在这些情况下,我手动处理了NSNull的出现。我认为作者也必须处理这个问题,所以我再做一次只会增加开销。然后,我在文档中找到了以下内容:
避免输出中的NSNull值。
NSData *theJSONData = /* some JSON data */
CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer];
theDeserializer.nullObject = NULL;
NSError *theError = nil;
id theObject = [theDeserializer deserialize:theJSONData error:&theError];}
据我所知,该类的用户可以将C风格的空指针传递给反序列化程序,当它遇到NSNull时,它将插入传递给它的值(空)。所以稍后当我使用这些值时,我不会得到NSNull,而是NULL。
这似乎很奇怪,返回值是一个只能包含对象的NSDictionary,不是应该将值默认为'nil‘吗?
如果为NULL,我可以像这样检查这些值吗?
if([jsonDataDict objectForKey:someKey] == NULL)
似乎更符合逻辑的是能够做到这一点:
if(![jsonDataDict objectForKey:someKey])
更不用说允许传递nil但传递NULL会导致崩溃的所有情况。
或者我可以只将'nil‘传递给反序列化程序吗?
这在很大程度上源于我仍然在为nil,NULL,NSNULL null而苦苦挣扎,也许我没有看到使用nil的潜在警告。
https://stackoverflow.com/questions/5716942
复制相似问题