2013-06-23 102 views
-3

我的项目中存在一些问题。所以我用JSON来获取一些信息。 当我用JSON文件夹(例如:我的NSDictionary与此播放列表名称播放列表,我有NSString的名称和专辑)为了这个,我做这个代码:如何在JSON中选择数组

NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:webdata options:0 error:nil]; 
    NSDictionary *playlist =[allDataDictionary objectForKey:@"playlist"]; 

    for (NSDictionary *diction in playlist) { 
     NSDictionary *artist = [diction objectForKey:@"artist"]; 
     NSDictionary *song = [diction objectForKey:@"song"]; 
     NSString *name = [artist objectForKey:@"name"]; 
     NSString *namesong = [song objectForKey:@"name"]; 
     [array addObject:name]; 
     [array2 addObject:namesong]; 
    } 
    [[self tableTrack]reloadData]; 
} 

它的工作完美!但!当我没有任何文件夹,只有,没有NSDictionary的JSON只有NSStrings,怎么做?对不起,我的愚蠢的问题,但实际上我试图写:

NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:webdata options:0 error:nil]; 
    NSString *name = [allDataDictionary objectForKey:@"name"]; 
    NSString *namesong = [allDataDictionary objectForKey:@"name"]; 
    [array addObject:name]; 
    [array2 addObject:namesong]; 
} 
[[self tableTrack]reloadData]; 

}

,但我有错误,也是我的应用程序崩溃:

*终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:' - [__ NSCFArray objectForKey:]:无法识别的选择发送到实例0x7615c90'

所以,我做错了什么?

+0

如果您在每种情况下都包含您正在解析的JSON样本,回答此问题会更容易。 – kamprath

+0

without NSDictionary http://jsonviewer.stack.hu/#http://europaplus.ua/upload/top40.json – Genevios

+0

而这个解析与NSDictionary http://jsonviewer.stack.hu/#http://europaplus。 ua/on_air/onair.json – Genevios

回答

2

错误说你有一个NSArray,而不是一个NSDictionary。这对应于JSON数组:

[ 
    { "name" : "fred" }, 
    { "name" : "jane" } 
] 

这里有一个字典数组。您可能需要:

NSArray *people = [NSJSONSerialization JSONObjectWithData:webdata options:0 error:nil]; 

for (NSDictionary *person in people) { 
    NSLog(@"name is %@", person[@"name"]; 
} 
+0

学习JSON如何在没有NSDictionary的情况下做到这一点? – Genevios

+0

是的!这是工作非常感谢的朋友! – Genevios