解析复杂的JSON

时间:2016-07-13 13:13:08

标签: ios objective-c json cocoa

我在工作中偶然发现了一个问题。我有一个我需要解析的JSON,所以我可以填充我的表。但是我们可以忽略表格,因为我可以自己做。我似乎遇到的问题是解析这个大json。简而言之:

NSData *jsonData = [NSData dataWithContentsOfURL:url];
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSArray* DetaliiTehnice = [json objectForKey:@"DetaliiTehnice"]; //10 elements
NSArray* ExtraData = [json objectForKey:@"ExtraData"]; //2 keys

我没有设法更多地解析他们。从完整的解析我想要这个:

- Array DateTehnice (10 elements)
     + Array/String Denumire (1 element)
     + Array Valori (3 elements)
         + String Criteriu
         + String Prod1
         + String Prod2

- Array ExtraData (6 elements)
     + Array/String Denumire (1 element)
     + Array Valori (3 elements)
         + String Criteriu
         + String Prod1
         + String Prod2

标有+的那个是我真正需要的。我不知道如何访问它们。如何获取Prod2值?我不需要非常优化的东西,我只需要一个可以访问元素的解决方案。

2 个答案:

答案 0 :(得分:0)

NSString *prod2_DateTehnice = [[[json objectForKey:@"DateTehnice"]objectAtIndex:0] objectAtIndex:0]objectAtIndex:2];

同样的方式

NSString *prod2_ExtraData = [[[json objectForKey:@"ExtraData"]objectAtIndex:0] objectAtIndex:0]objectAtIndex:2];

答案 1 :(得分:0)

如果从服务器获取字典,请获取数据:

NSArray *DetaliiTehnice = json[@"DateTehnice"];
for (NSString *item in DetaliiTehnice) {
    NSLog(@"%@", item);
}

NSLog(@"%@", DetaliiTehnice[1]);

如果你得到数组,那么替换为:

NSArray *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *dict = json[1]; //change index
NSArray *DetaliiTehnice = dict[@"DateTehnice"];
for (NSString *item in DetaliiTehnice) {
    NSLog(@"%@", item);
}