我尝试将NSDictionary设置为从服务器检索到的JSON对象,我在此行中执行此操作:
_peopleArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
它工作正常并正确创建字典。但是,我遇到了一个问题,JSON对象中null
的值在字典中存储为"<null>"
字符串值。有没有办法解决这个问题或解决它?我想避免遍历整个事物并将它们设置为@""
。
感谢您的帮助!
〜Carpetfizz
答案 0 :(得分:7)
你错了。 JSON中的空值不存储为&lt; null&gt;字符串值。它们存储为NSNull对象,NSLog将其记录为&lt; null&gt;。
您永远不会相信您提供的数据。如果您假设您有一个NSString并且服务器向您发送了一个号码,那么您的代码可能会崩溃。
NSString* myJSONString = ...;
if ([myJSONString isKindOfClass:[NSString class]]) {
it is a string
} else {
it is not a string
}
答案 1 :(得分:1)
我猜没有什么,虽然它可以很容易地从api制造商纠正,如果不可能,你可以随时放一个简单的宏,我用来避免这样的事情,按照下面的宏
#define Is_Empty(value) (value == (id)[NSNull null] || value == nil || ([value isKindOfClass:[NSString class]] && ([value isEqualToString:@""] || [value isEqualToString:@"<null>"]))) ? YES : NO
#define IfNULL(original, replacement) IsNULL(original) ? replacement : original
#define IsNULL(original) original == (id)[NSNull null]
#define SafeString(value) IfNULL(value, @"")
用法
self.label.text=SafeString([dic objectForKey:@"name"]);