我应该使用NSCoder串行化为JSON吗?

时间:2014-05-06 13:26:02

标签: ios objective-c json serialization

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

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

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

2)符合NSCoder协议,有点像上面的方法,但似乎有一些混淆是否可以序列化为JSON或只是NSData

3)第三方图书馆。

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

思想?

1 个答案:

答案 0 :(得分:0)

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

使用2,我认为这可能是可能的,因为我认为NSCoder的输出是some variant of XML(虽然压缩成二进制blob)。但是,我不知道这是否是一个很好的方法,因为格式是专有的,并不是真正意味着人类可编辑。在密钥和叶子节点方面,JSON允许的格式与NSCoder格式之间可能存在不匹配,迫使您进行混乱的转换。

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