我正在提取json数据......并且无法改变它的出现方式
(案例1)大部分时间都是这样的
collection1 {
-paragraph { href:" x", 文字:" y" },
标题:"标题"
},
(案例2)有时它会像这样出现
段落:" y"
标题:"标题"
},
...
我这样做 - > NSString * paragraphText = [[postDictionary objectForKey:@" paragraph"] objectForKey:@" text"];
获取CASE 1中的数据
但对于案例2,我需要检查是否有NESTED键 - > [[postDictionary objectForKey:@" paragraph"] objectForKey:@" text"];存在
如果它没有那么只使用 - > [[postDictionary objectForKey:@"段落"]
我已经尝试了很多方法来检查密钥是否存在......即
id obj = [[postDictionary objectForKey:@" paragraph"] objectForKey:@" text"]; if(obj == [NSNull null]){
if(![[postDictionary objectForKey:@" paragraph"] objectForKey:@" text"])以及上述的其他变体......
我收到错误 - > [__NSCFString objectForKey:]:无法识别的选择器发送到实例0x145731f0'
我知道钥匙不存在......
如何检查嵌套密钥是否存在? ..这样我可以尝试另一个密钥访问数据?
答案 0 :(得分:1)
检查段落的类型,如果它是字典的话,那么
id paragraph = postDictionary[@"paragraph"];
if([paragraph isMemberOfClass: [NSDictionary class]])
{
// case 1
NSString *textFromParagraph = ((NSDictionary*)paragraph)[@"text"];
}
答案 1 :(得分:0)
感谢Eike,Rishi和Adama。我最终做了
NSDictionary * paragraph = postDictionary [@“paragraph”];
if ([paragraph isKindOfClass:[NSDictionary class]])
{[@"text"];
blogPost.content = [[postDictionary objectForKey:@"paragraph"] objectForKey:@"text"];
}else{
blogPost.content = [postDictionary objectForKey:@"paragraph"];
}
我学到了一些东西。
谢谢:D