{"Overviews":
[
{"AAAA": [
{"Generala": "sometext",
"Generalb": "sometext",
"Generalc": "sometext"}
],
"BBBB": [
{"Generala": "sometext",
"Generalb": "sometext",
"Generalc": "sometext"}
]
}
]
}
您好我用SBJson来解析这个json。当我分配NSArray * json = [jsonObject valueForKey:@“Overviews”];。数据层次结构并不顺利。我使用了一个NSDictionary,2个NSArray和1个NSString来解析Generala。
我的目标是解析数据“Generala”,如下所示:
NSDictionary *data = [overviews valueForObject:@"AAAA"];
NSString *generals = [data valueForObject:@"Generala"];
我在json文件中做错了什么?提前谢谢。
答案 0 :(得分:2)
你那里有多余的数组。概述是一个包含一个元素的数组 - 字典。它应该只是字典。这同样适用于AAAA和BBBB - 它们是包含单个字典的数组,当它们应该只是字典时。
基本上,只需删除JSON中的所有方括号。
答案 1 :(得分:1)
您的源是一个条目的字典,该条目包含一个条目的数组,该条目包含两个条目的字典,每个条目包含一个条目的数组,该条目包含三个条目的字典。 / p>
我怀疑这正是JSON解析器解析它的方式。
答案 2 :(得分:1)
NSArray *dataArray = [overviews objectForKey:@"AAAA"];
NSDictionary *dataDict = [dataArray objectAtIndex:0];
NSString *generals = [dataDict objectForKey:@"Generala"];
这将使您获得正确的值,但正如您所见,我必须“硬编码”索引“0”。你可能想要一些逻辑来到特定的数组。
或将您的json更改为:
{"Overviews":
{"AAAA":
{"Generala": "sometext",
"Generalb": "sometext",
"Generalc": "sometext"},
"BBBB":
{"Generala": "sometext",
"Generalb": "sometext",
"Generalc": "sometext"}
}
}
并使用: NSDictionary * dataDict = [overviews objectForKey:@“AAAA”]; NSString * string = [dataDict objectForKey:@“Generala”];