IOS/Objective-C:检测 jsonResults 是否包含键值对



在某些情况下,我尝试解析的JSON对象包含某个键。 在其他情况下,它不会。

当我尝试访问对象的键值对时,无论该键不存在,自然会导致崩溃。 因此,我正在尝试事先测试密钥是否存在。 但是,由于某种原因,NSNull 类测试不起作用。 有人可以建议正确的测试来检测密钥是否存在吗?

这是我编辑的代码,用于筛选出它不起作用的空情况:

NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"Results of post: %@", jsonResults);
if ([jsonResults[@"response"][@"insert_id"]isKindOfClass:[NSNull class]]){
NSLog(@"insert id is null");}
else {
//EVEN WHEN I KNOW THAT THERE IS no insert_id key, I get to this code suggesting test above not working
//Access insert_id value using Key value and so something with it
NSInteger insertID = [jsonResults[@"response"][@"insert_id"] integerValue];
}

最后它是一个 NSDictionary,如果你研究 NSDictionary 是否包含密钥,你会发现更多的帮助。

如果密钥不存在,objectForKey将返回 nil。 您可以尝试:

if ([jsonResults objectForKey:@"response"] valueForKey:@"insert_id"] != nil {
NSLog(@"insert id is not null");
}

或确保您的回答是字典

NSDictionary *response = jsonResults[@"response"];
if ([response isKindOfClass:[NSDictionary class]]) {
if (jsonResults[@"response"][@"insert_id"] != nil {
NSLog(@"insert id is not null");
}
}

相关内容

  • 没有找到相关文章

最新更新