Iphone IOS JSON从一个";JSON Dict";
我有这样的数据结构:Iphone IOS JSON从一个";JSON Dict";,iphone,objective-c,ios,json,Iphone,Objective C,Ios,Json,我有这样的数据结构: { "artistlist " : [ { "performer" : "Gate Zero" }, { "performer" : "nightech" }, {
{
"artistlist " : [
{
"performer" : "Gate Zero"
},
{
"performer" : "nightech"
},
{
"performer" : "Marko Fuerstenberg"
},
]
}
我使用以下代码行将此结构从NSString读入NSDictionary:
JSON = [NSJSONSerialization JSONObjectWithData:
[[chunks objectAtIndex:1]
dataUsingEncoding:NSUTF8StringEncoding] options:
NSJSONReadingMutableContainers error: &e];
使用:[JSON objectForKey:@“artistlist”]
我得到了以下结构:
(
{
performer = "Gate Zero";
},
{
performer = nightech;
},
{
performer = "Marko Fuerstenberg";
}
)
有什么办法可以“更深入”吗
如何解析结果结构
我想获得一个值列表或直接访问执行者名称。如果一个元组中有几个值,例如表演者姓名、唱片集、年份,该怎么办。我如何访问这些值
谢谢。是的,在您拥有
[JSON objectForKey:@“artistlist”]
之后,您会得到一个NSArray
的NSDictionary
(有点混乱!)
这将产生每个执行者的名字。或者,您可以对(NSU整数i=0;i<[performersArray计数];i++)执行
,并访问NSDictionary*performersDic=[performersArray对象索引:i]
。从那里,您可以类似地使用[performdic objectForKey:@“performer”]
您必须使用递归。例如,假设您只有嵌套的NSDictionary(易于修改以使用NSArray):
像这样:
[[[JSON objectForKey:@"artistlist "] objectAtIndex: 1] objectForKey:@"performer"]
它将为您提供“nightech”
{}
对应于NSDictionary
,[]
对应于NSArray
- (void) getArtistFromJsonObject:(NSDictionary *)obj {
for (NSString *key in [obj allKeys]) {
id child = [obj objectForKey:key];
if ([child isKindOfClass:[NSString class]]) {
// that's the actual string
// NSLog(@"Found artist: %@", child); // or do whatever needed
} else if ([child isKindOfClass:[NSDictionary class]]) {
[self getArtistFromJsonObject:child];
}
}
}
[[[JSON objectForKey:@"artistlist "] objectAtIndex: 1] objectForKey:@"performer"]