2010-04-13 243 views
6

對於我的iPhone應用程序,我正在使用RESTful服務並獲取JSON。我發現庫反序列化成一個NSDictionary。但是,我想知道是否有任何庫將JSON/NSDictionary/Property List反序列化到我的對象中(我的任意一個)。JSON對象映射(iphone)

雖然我所尋找的對象映射類型相對簡單(簡單的數據類型,沒有複雜的關係等),但Java等價物將成爲對象關係映射器。

我注意到Objective-C確實有內省,所以它在理論上似乎是可行的,但我還沒有找到一個庫來做到這一點。

或者是否有一種簡單的方法從NSDictionary/Property List對象加​​載一個對象,每次對象更改時都不需要修改?

例如:

{ "id" : "user1", 
    "name" : "mister foobar" 
    "age" : 20 } 

被加載到對象

@interface User : NSObject { 
NSString *id; 
NSString *name; 
int *age; 
} 
+0

年齡沒有星號,因爲這是一個整數 – 2011-08-25 16:04:49

回答

5

看一看的NSKeyValueCoding協議。特別是,方法setValuesForKeysWithDictionarydictionaryWithValuesForKeys:

+0

真棒。謝謝你,寶貝。我不知道NSObject支持這種協議。我現在可以寫我自己的簡單映射器。 – pschang 2010-04-13 22:49:43

1

看看Sourceforge上的Loid項目。我的意圖是提供你正在談論的內容。

現在框架可以反向設計關於對象的元描述(例如您的「用戶」對象),並且可以序列化LoidTypeData對象和從LoidTypeData對象序列化。我的意圖是從傳入的JSON塊創建一個LoidTypeData實例,然後將其綁定到該對象。當然,反過來也會在那裏。

它是開放源代碼和GPL。您目前需要從SVN訪問代碼,並不知道如何爲Mac構建發行版。

- 弗蘭克