2010-04-13 185 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构建发行版。

- 弗兰克