как получить объекты из массива json в iphone? - PullRequest
2 голосов
/ 31 октября 2011

Я работаю над приложением для iPhone, которое использует json-framework. Я получаю массив, используя NSURL

[{"firstName":"X","lastName":"Y","id":1},{"firstName":"A","lastName":"B","id":2}]

Как я могу получить эти 2 объекта, как если бы я запросил id = 1, O / P равно

id=1
firstName:X
lastName:Y

и положить его в стол. Я гуглю материал много дней, но не получил никакого решения. Пожалуйста, помогите мне, объяснение через код приветствуется.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Если ваш целевой SDK ios4 или выше, вы можете использовать этот проект

https://github.com/stig/json-framework/

Как только вы добавите источник в ваш проект, просто

#import "SBJson.h"

и преобразуйте вашу строку Json следующим образом

jsonResponse = [string JSONValue];

Метод завершится ошибкой, если в вашей строке нет полного массива Json, но вы можете продолжать добавлять строки до тех пор, пока не произойдет сбой

Для отслеживания запроса codejunkie, приведенного ниже, в своей структуре данных можно предположить, что jsonResponse является NSArray. В других реализациях позаботьтесь о проверке ответа для NSArray или NSDictionary

NSArray * myPeople = [string JSONValue]; 
NSMutableDictionary * organizedData = [[NSMutableDictionary alloc] init];
for (NSDictionary * p in myPeople) {
    [organizedData setValue:p forKey:[p valueForKey:@"id"]];
}
    // now you can query for an id like so
    // [organizedData valueForKey:@"1"]; and your output will be what you wanted from the original question
    // just don't forget to release organizedData when you are done with it
4 голосов
/ 01 ноября 2011

https://github.com/johnezang/JSONKit

Я использую это для получения данных от веб-службы, которая выдает 50 записей, каждая из которых имеет еще 20 внутренних элементов, аналогичных указанным вами ...

Я использую JSONKit следующим образом ... (Я смотрел на SBJson много пользователей, но я запутался от слова go.)

JSONDecoder *jArray = [[JSONDecoder alloc]init];
NSMutableArray *theObject = [[NSMutableArray alloc] init];   
 theObject = [jArray objectWithData:theResponseData];//objectWithString:theResponseString
NSMutableArray *csArray = [[NSMutableArray array] retain] ;

    for(id key in theObject)
    {
      if([key valueForKey:@"firstName"]  != Nil) 
      {
       ........
       }
     if([key valueForKey:@"lastName"]  != Nil) 
      {
       ........
       }
    }

проверьте это и дайте мне знать, если это работает или нет .. Кстати, отличные отзывы, ребята ... Хорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...