Car*_*izz 5 json nsdictionary ios nsjsonserialization
我试图将NSDictionary设置为从服务器检索的JSON对象,我在这行中做到了:
_peopleArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
它工作正常,并正确创建字典.但是,我有一个问题,nullJSON对象中的"<null>"值作为字符串值存储在字典中.有没有办法解决这个问题或解决它?我想避免遍历整个事情并将它们设置为@"".
谢谢你的帮助!
〜Carpetfizz
你错了.JSON中的空值不会存储为<null>字符串值.它们存储为NSNull对象,NSLog记录为<null>.
你永远不能相信你给出的数据.如果您假设您有一个NSString并且服务器向您发送了一个号码,那么您的代码可能会崩溃.
NSString* myJSONString = ...;
if ([myJSONString isKindOfClass:[NSString class]]) {
    it is a string
} else {
    it is not a string
}
我猜没有什么,虽然它可以很容易地从 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"]);