2013-10-08 4 views
0

Я знаю, как разбирать данные JSON со всеми значениями пары ключей. Проверьте ниже JSONIOS JSON Parsing

{ "а": [ "a1", "a2", "a3" ], "б": [ "b1", "b2", " b3 " ] }

В этом случае значения ключа a и b не являются значениями статического ключа. Это динамические значения ключа. Как это разобрать?

ответ

1

Если вы знаете, что они являются Массивы:

NSDictionary *parsedData = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 

for (NSString *key in [parsedData allKeys]) 
{ 
    // you have now a key to an array 
} 
0
//Get json data in Dictionary 
json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error]; 

NSLog(@"%@",json); 

NSArray * responseArr = json[@"Deviceinfo"]; // Here you need pass your key 

for(NSDictionary * dict in responseArr) 
{ 

    [delegate.firstArray addObject:[dict valueForKey:@"a"]]; 
} 

Попробуйте этот код ...

0

Чтобы преобразовать JSON в NSDictionary:

NSError *error= nil; 
NSDictionary *parsedDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 

parsedDictionary будет

parsedDictionary = { 
a = [a1,a2,a3], 
b = [b1,b2,b3] 
}; 

Чтобы получить все ключи в словаре

NSArray *allKeys = [parsedDictionary allKeys]; 

Чтобы получить и Ь массивы в словаре

for (NSString *key in allKeys) 
{ 

NSArray *a = parsedDictionary[key]; 

} 
0

Вы можете использовать мой метод JSon разборе,

Разбор Метод:

-(void)jsonDeserialize:(NSString *)key fromDict:(id)content completionHandler:(void (^) (id parsedData, NSDictionary *fromDict))completionHandler{ 
    if (key==nil && content ==nil) { 
     completionHandler(nil,nil); 
    } 
    if ([content isKindOfClass:[NSArray class]]) { 
     for (NSDictionary *obj in content) { 
      [self jsonDeserialize:key fromDict:obj completionHandler:completionHandler]; 
     } 
    } 
    if ([content isKindOfClass:[NSDictionary class]]) { 
     id result = [content objectForKey:key]; 
     if ([result isKindOfClass:[NSNull class]] || result == nil) { 
      NSDictionary *temp = (NSDictionary *)content; 
      NSArray *keys = [temp allKeys]; 
      for (NSString *ikey in keys) { 
      [self jsonDeserialize:key fromDict:[content objectForKey:ikey] completionHandler:completionHandler]; 
      } 
     }else{ 
      completionHandler(result,content); 
     } 
    } 
} 

Вызов метода:

NSData *content = [NSData dataWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Sample" ofType:@"json"]]; 
    NSError *error; 

// получить данные сериализованные JSon ...

id dictionary = [NSJSONSerialization JSONObjectWithData:content options:NSJSONReadingMutableContainers error:&error]; 

// получить данные для ключа называется GetInfo

 [self jsonDeserialize:@"GetInfo" fromDict:dictionary completionHandler:^(id parsedData, NSDictionary *fromDict) { 
      NSLog(@"%@ - %@",parsedData,fromDict); 
     }];