0

我可以轻松找到以下工具:

  • 将 JSON 转换为 csharp 模型类
  • 将 JSON 转换为 objc 模型类
  • 将 JSON 转换为 Java 的 POJO
  • 等等

但是,如果我希望在这个过程的中间介入并将我自己的转换器从 JSON 转换为blah模型类,会发生什么?

是否有一个编程框架或工具可以很好地理解 JSON 并简单地提供我可以以编程方式实现的钩子或回调,以便完成工作的后半部分,即吐出我自己风格的模型类?

我在这个问题背后的动机是我发现: http: //jsonpack.com/ModelGenerators/ObjectiveC这有助于生成依赖于 JSONKit 框架的 ObjC 模型类,但我想生成依赖于RestKit 框架。

4

1 回答 1

2

如果我理解正确,您可能正在寻找“SAX 风格”解析器。也就是说,您为解析器实现某种委托,该委托从解析器接收解析事件并适当地处理这些事件。

因此,您的委托不是创建一个 JSON 表示,它是由 NSArray、NSDictionary 和 NSString 等组成的 Foundation 对象的层次结构,而是创建某些自定义类的一个或多个实例。

虽然这是可行的,但如果您有这样的“SAX 风格”解析器(NSJSONSerialization 不是),它肯定需要一些努力。请注意,您始终可以将 Foundation 层次结构“转换”为任何其他对象 - 例如 Core Data 模型对象。(意味着,从 NSDictionary 初始化一个对象)。但是,更复杂的方法肯定更快。

我知道的两个具有 SAX 风格 API 的 Objective-C JSON 解析器框架是 SBJson https://github.com/stig/json-framework/和 JPJson https://github.com/couchdeveloper/JPJson

后一个解析器库(JPJson)实际上很明显是通过分离这两个任务来设计的:a)解析和 b)执行语义动作。您可以从现有的基类“语义操作”子类化,并创建自己的并覆盖对应于处理解析事件的“处理程序方法”。

我是 JPJson 的作者,目前正在更新它以适应新的 clang 编译器 (C++11) 和 Xcode。

于 2013-04-09T17:10:49.853 回答