Проблема с разбором JSON

Я новичок в мире iphone и json. У меня есть эта структура JSON. Вы можете увидеть это ясно, разместив здесь http://jsonviewer.stack.hu/.

 {"@uri":"http://localhost:8080/RESTful/resources/prom/","promotion":[{"@uri":"http://localhost:8080/RESTful/resources/prom/1/","descrip":"description
 here","keyid":"1","name":"The first
 name bla bla
 ","url":"http://localhost/10.png"},{"@uri":"http://localhost:8080/RESTful/resources/promo/2/","descrip":"description
here","keyid":"2","name":"hello","url":"http://localhost/11.png"}]}

я хочу разобрать его с помощью json-framework . Я пробовал это

 NSDictionary *json    = [myJSON JSONValue];
            NSDictionary *promotionDic    = [json objectForKey:@"promotion"];
            NSLog(@" res %@ : ",[promotionDic objectAtIndex:0]); 

Но тогда как сделать, чтобы получить для примера имя объекта с индексом 0? Я думаю, что я должен положить объект в NSArray? но я не нахожу, как: / и я не номер объекта является переменной. Помогите, пожалуйста.

2 ответа

Решение

JSON говорит:

..."promotion":[{"@u...

Тот "["Там означает, что" продвижение "является ключом к массиву, а не словарю.

Так что на самом деле ваш код должен быть:

NSDictionary *json    = [myJSON JSONValue];
NSArray *promotions   = [json objectForKey:@"promotion"];
NSLog(@"res: %@",[promotions objectAtIndex:0]); 

Прежде всего, вам нужна эта строка после загрузки JSON

        NSLog(@" json %@ : ",[json description]); 

Это скажет вам, что у вас есть.

Во-вторых, вы не можете вызвать objectAtIndex: в словаре. Если это работает, это потому, что PromotionDict действительно NSArray. (NSLog скажет вам). В Objective - C вы можете назначить любой указатель, который вводит в заблуждение новых разработчиков, но является частью языка и действительно является функцией.

С NSArray вы можете запросить количество вещей в нем, [myArray count] и т. Д. Вам нужно выполнить двойной щелчок в XCode, чтобы открыть документы для NSDictionary и т. Д.

Другие вопросы по тегам