【问题标题】:Should I use NSCoder to serialise to JSON?我应该使用 NSCoder 序列化为 JSON 吗?
【发布时间】:2014-06-23 03:29:31
【问题描述】:

关于 SO 有许多问题和答案询问我如何在目标 c 中将对象序列化。

以上链接中都提到了以下3种方法。

1) 使用NSJSONSerialization 将对象序列化为 JSON。看起来不错,但这要求有问题的对象是顶层的数组或字典。常见的解决方案是声明自定义的toDictionaryserialise 方法,循环遍历属性并设置相关的键和值。

2) 符合NSCoder 协议,有点像上面的方法,但是对于这是否可以序列化为 JSON 或仅序列化为 NSData 似乎有些混乱。

3) 第三方库。

我对采取什么方法感到有些困惑。我想序列化为 JSON,有一些相互矛盾的答案说你可以使用 NSCoder 一些说不能。我知道第三方应用程序可以工作,但我宁愿实现一些简单的东西,比如选项 1 或 2。

想法?

【问题讨论】:

标签: ios objective-c json serialization


【解决方案1】:

使用1,您基本上可以从头开始编写NSCoder 的基于JSON 的实现。不过当然可行。

使用2,我相信这是可能的,因为我认为NSCoder 的输出是some variant of XML(虽然压缩成二进制blob)。但是,我不知道这是否是一个很好的方法,因为格式是专有的,并不是真的可以人工编辑。在键和叶节点方面,JSON 与 NSCoder 格式允许的内容之间也可能不匹配,从而迫使您进行混乱的转换。

我一直在尝试做类似的事情,根据我的研究,我实际上建议3。使用 Mantle 之类的东西——一个稳定、完善的框架,经常更新——你可以准确地指定你的模型对象将如何序列化和反序列化 JSON。它甚至支持NSCoder 协议作为选项! (这实际上是1 的解决方案,但由第 3 方审查和维护。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2021-10-20
    • 2012-01-25
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多