使用AFNetworking 2.5将JSON序列化为NSArray

时间:2014-12-04 01:22:39

标签: ios objective-c json afnetworking afnetworking-2

到目前为止,利用AFNetworking 2.5填充一个阵列,其中填充了与top.fm API相关的顶级曲目的艺术家。这是我目前的代码。

NSURL *url = [NSURL URLWithString:URLstring];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    operation.responseSerializer = [AFJSONResponseSerializer serializer];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSDictionary *dict = (NSDictionary *)responseObject;
        NSArray *allValues = [dict allValues];
        NSLog(@"all values contained in array: %@", allValues);
        NSLog(@"all values count: %lu", allValues.count);

计数返回1.我希望有一个填充了轨道的数组,每个索引值对应一个轨道。目前,只有第一个索引值在数组中填充。我还注意到正在打印的JSON数据是JSON,并且在打印时看起来不像NSArray中的对象。

编辑:这是input

2 个答案:

答案 0 :(得分:2)

使用KVC获取曲目数组:

NSArray* tracks = [dict valueForKeyPath:@"toptracks.track"] 

或类似的东西

答案 1 :(得分:1)

从您发布的输入JSON判断出实现目标的最佳方法是修改以下内容。

NSArray *allValues = [dict allValues];更改为

NSDictionary *dict = (NSDictionary *)responseObject;
NSArray *allValues = dict[@"toptracks"][@"track"];