2012-01-05 42 views
2

我已經瞭解到,在iOS5上有一個用於JSON解析的本機解決方案,能夠使用該解決方案代替大多數人使用的外部JSON框架是非常好的。iOS5上的複雜JSON

有關如何使用JSON原生iOS上​​的文章是在這裏: http://www.raywenderlich.com/5492/working-with-json-in-ios-5

現在我的問題:到目前爲止,這似乎很容易處理容易格式化的JSON,但我有問題要明白,我怎麼能訪問更復雜的數據方案。

例如,如果我有一個包含3個字典的JSON對象,並且每個字段都包含不同的數組和字典作爲條目,我不清楚如何訪問這些數據。

在Java中,您可以使用點符號來訪問子數據,如obj1.dictionary1 [3] .varname,它將訪問第一個對象,轉到dictionary1的位置3並獲取varname的鍵值。 ...如何使用iOS JSON功能獲得相同的結果?

不幸的是,原生的iOS JSON框架似乎並不遵循Java中使用JSON對象的邏輯,所以我對如何實現我的目標非常無知。

我應該放棄原生JSON並在線使用JSON框架嗎?

在此先感謝您的意見。

+0

「Java」或「JavaScript」?如帖子中提到的那樣,Java是Java的 – fge 2012-01-05 22:11:27

+0

。 – user1006198 2012-01-05 23:23:30

+0

錯誤不,你不能以這種方式訪問​​Java的JSON。它與JDK的外部庫完成,如傑克遜。 – fge 2012-01-05 23:27:06

回答

1

不可以使用「點符號」。 您將不得不使用NSArray及其objectAtIndex連同NSDictionary及其objectForKey

參見,例如, IOS JSON get all values from a "JSON Dict"

在大多數情況下,第三方庫將具有相似的API(即將返回嵌套字典和數組)。還沒有看到任何庫提供類似對象的「點符號」。

+0

非常感謝Krizz;我希望能夠節省硬手工工作以從JSON中獲取數據,但似乎最終我所得到的只是從JSON格式轉換爲字典和數組格式,所以我可以在本地遍歷它們,就好像我正在創建並填充它們。如果有人在調用密鑰並獲取值(指定層次結構,不一定使用點符號)的情況下創建API,也許會很好。處理複雜的JSON Feed時會節省大量時間。 – user1006198 2012-01-05 23:28:05

+0

我相信,[KVC](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html)是可能的。 – Krizz 2012-01-05 23:30:52

+0

@Krizz基於我對KVC的研究,它不一定是可能的,因爲KVC無法訪問特定的數組索引。所以,如果你的數據結構碰巧包含一些數組,KVC將無法工作。 – 2012-09-27 02:49:04

1

這實際上是一個關於遍歷objective-c數據結構而不是JSON的語法問題。查看訪問文檔NSDictionaryNSArray

+0

感謝您的澄清。我的理解是,在iOS中解析JSON的對象也會隱含地像Java上的對象那樣行事,所以我不確定爲什麼我不能在obj-c上使用等效的點語法。因此,該對象所做的一切是從JSON轉換爲常規NSDictionary和NSArray? – user1006198 2012-01-05 23:25:17

+0

是的。它將原始JSON轉換爲基本的Objective-C數據結構,值得注意的是NSArrays,NSDictionaries,NSStrings和NSNumbers – coneybeare 2012-01-06 00:17:04