【问题标题】:Object mapping in objective-c (iphone) from JSON来自JSON的objective-c(iphone)中的对象映射
【发布时间】:2010-04-13 03:35:38
【问题描述】:

对于我的 iPhone 应用程序,我正在使用 RESTful 服务并获取 JSON。我找到了将其反序列化为 NSDictionary 的库。但是,我想知道是否有任何库可以将 JSON/NSDictionary/Property List 反序列化为我的对象(我这边的任意一个)。

Java 等价物将是对象关系映射器,尽管我正在寻找的对象映射类型相对简单(简单的数据类型,没有复杂的关系等)。

我注意到 Objective-C 确实有自省功能,所以理论上它似乎是可行的,但我还没有找到一个库来做到这一点。

或者有没有一种简单的方法可以从 NSDictionary/Property List 对象中加载一个对象,并且每次对象更改时都不需要修改?

例如:

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

被加载到对象中

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

【问题讨论】:

  • 年龄没有星号,因为它是一个整数

标签: iphone objective-c json rest orm


【解决方案1】:

看看NSKeyValueCoding 协议。特别是setValuesForKeysWithDictionary: 和dictionaryWithValuesForKeys: 方法

【讨论】:

  • 太棒了。谢谢保罗。我不知道 NSObject 支持这种协议。我现在可以编写自己的简单映射器了。
【解决方案2】:

我已经制作了一个框架来自动执行此操作。退房。

https://github.com/dchohfi/KeyValueObjectMapping

【讨论】:

  • 这个可以用来把json转成NSObjects吗?
【解决方案3】:

查看 Sourceforge 上的 Loid 项目。我的目的是提供您所谈论的内容。

现在框架可以对一个对象的元描述进行逆向工程(比如你的“用户”对象),并且可以序列化到一个 LoidTypeData 对象。我的意图是从传入的 JSON 块创建一个 LoidTypeData 实例,然后将其绑定到 Object。当然,反过来也会有。

它是开源和 GPL 的。您目前需要从 SVN 访问代码,不太了解如何为 Mac 构建发行版。

-- 弗兰克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2011-08-09
    • 2023-03-22
    • 1970-01-01
    • 2012-01-08
    • 2021-01-15
    • 2018-05-14
    相关资源
    最近更新 更多