2015-05-12 2 views
0

Я пытаюсь работать с веб-сервисом, который делает некоторые безумные вещи. Часть сервиса возвращает значение, похожее на этот снимок экрана.NSDictionary - Разбор позиции из возвращаемого сервиса JSON

WebService Returned Data Ниже приведен мой код, просто пытающийся выполнить цикл NSDictionary.

NSDictionary *platesJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

for(id key in platesJson) { 
     id myvalue = [platesJson objectForKey:key]; 
     NSString *myValue = [[platesJson objectForKey:key] objectForKey:@"value"]; 
    } 

Я попытался зацикливание по словарю массивов и вытягивать информацию пока она, кажется, всегда возвращает ноль или сбою полностью. По иронии судьбы экран, снятый со значением 0, является ошибкой для этой веб-службы, которую я пытаюсь включить в условие if.

Я также попробовал следующее, получив его ноль;

for (int i = 0; i< platesJson; i++) 
    { 
    NSString *myValue = [[platesJson objectAtIndex:i] objectForKey:@"value"]; 
    } 

if(myValue == 0){ 
//Alert the user no data found 
} 
else{ 
//Continue on.... 
} 

Я уверен, что это что-то очень простое, просто застряло, чтобы подойти к нему с правильным синтаксисом.

+0

Пожалуйста, измените NSString на NSArray или NSMutableArray, а затем попробуйте. –

ответ

1
NSDictionary *platesJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

for(id key in platesJson) { 
     id myvalue = [platesJson objectForKey:key]; 
     NSString *myValue = [platesJson objectForKey:key]; 
    } 

Я думаю, что это будет работать,

[platesJson objectForKey:key] Получит значение. Если значение представляет собой словарь, вам нужно снова зациклиться. Но в изображении вы добавите, это только простой словарь

+0

Спасибо. Да, этот способ работает для id/key. Проблема, с которой я столкнулась, заключалась в том, что ключ является динамическим (это означает, что значение может быть 0,1,2,3 и т. Д. Но вы правы, заявляя, что код будет работать. Однако мне нужно будет пересмотреть логику. быстрый ответ! – Jeremy

0

Если вы действительно, что значение в ключе является NSDictionary, вы получите что то вроде этого:

NSDictionary *myValue = JSON[ key ]; 

И вы можете получить значение от myValue, как точно такие же:

NSString *someString = myValue[ @"KLSL" ]; 

Примечание первым элементом в JSON является NSArray или NSDictionary.

Я надеюсь, что это может вам помочь.

+0

Спасибо, Jan, значение динамическое, поэтому часть кода KLSL всегда будет меняться. Веб-сервис, который я потребляю, делает некоторые странные вещи, и я пытался сгибать объективный c. Очевидно, мне нужно переосмыслить это. для быстрого воспроизведения! – Jeremy

Смежные вопросы