2012-01-05 2 views
2

Я узнал, что существует собственное решение для JSON-синтаксического анализа на iOS5, и это здорово использовать это вместо внешней структуры JSON, которую использует большинство людей.complex JSON on iOS5

В статье о том, как использовать JSON изначально на прошивкой здесь: http://www.raywenderlich.com/5492/working-with-json-in-ios-5

Теперь мой вопрос: до сих пор это кажется довольно простой в обращении легко отформатированный JSON, но у меня возникают проблемы, чтобы понять, как я могу получить доступ к более сложные схемы данных.

Например, если у меня есть объект JSON, содержащий 3 словаря, и каждый из них содержит разные массивы и словари в качестве записи, я не понимаю, как получить доступ к этим данным.

В Java вы можете использовать точечную нотацию для доступа к дополнительным данным, например obj1.dictionary1 [3] .varname, которые будут обращаться к первому объекту, перейти в позицию 3 словаря1 и получить значение ключа для varname. ... как вы получаете одни и те же результаты, используя только возможности iOS JSON?

К сожалению, встроенная инфраструктура JSON для iOS не соответствует логике использования объекта JSON в Java, поэтому я почти не знаю, как достичь своей цели.

Должен ли я отказаться от родного JSON и использовать систему JSON, доступную в Интернете?

Заранее благодарим за ваши комментарии.

+0

«Java» или «JavaScript»? – fge

+0

Java, как упоминалось в сообщении. – user1006198

+0

Err нет, вы не можете получить доступ к JSON с Java таким образом. Это делается с помощью внешних библиотек для JDK, таких как Jackson. – fge

ответ

1

№ Вы не можете использовать «точечную нотацию». Вам необходимо будет использовать NSArray и его objectAtIndex вместе с NSDictionary и его objectForKey.

См., Например, IOS JSON get all values from a "JSON Dict".

В большинстве случаев библиотеки сторонних разработчиков имеют аналогичный API (т. Е. Возвращают вложенные словари и массивы). Не видел никакой библиотеки, чтобы обеспечить объектную «точечную нотацию».

+0

Большое спасибо Krizz; Я надеялся сохранить жесткую ручную работу, чтобы вытащить данные из JSON, но кажется, что в конечном итоге все, что я получаю, это преобразование из формата JSON в словари и формат массивов, поэтому я могу изначально пересекать их, как если бы я создавал и заселение их. Может быть, было бы неплохо, если бы кто-то просто создал API, где вы вызываете ключ и получаете значение (указав иерархию, не обязательно используя точечную нотацию); это сэкономит много времени при работе со сложными фидами JSON. – user1006198

+0

Я считаю, что это возможно с [KVC] (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html). – Krizz

+0

@Krizz. Основываясь на моих исследованиях в KVC, это необязательно, потому что KVC не имеет доступа к определенным индексам массива. Итак, если ваша структура данных содержит некоторые массивы, KVC не будет работать. –

1

Это действительно вопрос о синтаксисе при пересечении объектно-ориентированных структур данных, а не JSON. Посмотрите документацию для доступа к NSDictionary и NSArray

+0

Спасибо за разъяснение.Было ли мое понимание, что объект, который анализирует JSON в iOS, также неявно действует как аналог на Java, поэтому я не был уверен, почему я не мог использовать эквивалент синтаксиса точек на obj-c. Итак, все, что делает объект, - это перенос из JSON в обычный NSDictionary и NSArray? – user1006198

+0

есть. Он преобразует необработанный JSON в базовые структуры данных объектно-с, заметные, NSArrays, NSDictionaries, NSStrings и NSNumbers – coneybeare