Разбор JSON словарь / массив - PullRequest
4 голосов
/ 13 апреля 2011

Если веб-служба JSON возвращает что-то вроде этого (сведения о домах)

[
    {
        id:4,
        price: 471,
        location: "New York",
        size: 3000
    },
    {
        id:7,
        price: 432,
        location: "London",
        size: 3200
    },
    {
        id:22,
        price: 528,
        location: "Tokyo",
        size: 2000
    }
]

Как бы я проходил через каждый дом один за другим? Я использую ASIHTTPRequest и анализатор JSON: http://stig.github.com/json-framework/

Я думаю, что я могу получить словарь так:

NSString *theResponse = [request responseString];
NSDictionary *dictionary = [theResponse JSONValue];

.. но я не уверен, как пройти через каждый дом.

1 Ответ

9 голосов
/ 13 апреля 2011
{
        id:4,
        price: 471,
        location: "New York",
        size: 3000
    },
    {
        id:7,
        price: 432,
        location: "London",
        size: 3200
    },
    {
        id:22,
        price: 528,
        location: "Tokyo",
        size: 2000
    }

Это массив словарей ... вы можете создать модальный класс своего Дома (с указанием идентификатора, цены, местоположения, размера) и повторить его следующим образом ... (учитывая, что вы наконец-то получили вышеуказанное)..

NSArray *houses = [dictionary objectForKey:<youHaveNotProvideItInYourData>];
NSMutableArray *populatedHouseArray = [[NSMutableArray alloc]init];
for(int i=0;i<[houses count];i++)
{
  NSDictionary *tempDictionary = [houses objectAtIndex:i];
  House *tempHouse = [[House alloc]init];
  if([tempDictionary objectForKey:@"id"]!=nil
  {
    tempHouse.id = [tempDictionary objectForKey:@"id"];
  }
  //and so on for other keys

  [populatedHouseArray addObject:tempHouse]; 
  [tempHouse release];
}

Спасибо,

...