[英]Should I use NSCoder to serialise to JSON?
SO上有很多问题和答案,我们如何在目标c中将对象序列化。
以上链接中都提到了以下3种方法。
1)使用NSJSONSerialization
将对象序列NSJSONSerialization
JSON。 看起来不错但这要求所讨论的对象在其顶层是数组或字典。 常见的解决方案是声明自定义的toDictionary
或serialise
方法,它循环遍历属性并设置相关的键和值。
2)符合NSCoder
协议,有点像上面的方法,但似乎有一些混淆是否可以串行化为JSON或仅仅是NSData
。
3)第三方图书馆。
我对于采取什么方法感到有些困惑。 我想序列化为JSON,有一些相互矛盾的答案,说明你可以使用NSCoder一些人说不。 我知道第三方应用程序可以工作,但我宁愿实现像选项1或2这样简单的东西。
思考?
使用1
,您基本上是从头开始编写基于JSON的NSCoder
实现。 但是当然可行。
使用2
,我相信它可能是可能的,因为我认为NSCoder
的输出是XML的一些变体 (虽然压缩成二进制blob)。 但是,我不知道这是否是一个很好的方法,因为格式是专有的,并不是真正意味着人类可编辑。 在密钥和叶子节点方面,JSON与NSCoder
格式允许的内容之间可能存在不匹配,迫使您进行混乱的转换。
我一直在尝试做类似的事情,根据我的研究,我实际建议3
。 使用像Mantle这样的东西 - 一个经常更新的稳定,优美的框架 - 您可以准确指定模型对象如何序列化和从JSON反序列化。 它甚至支持NSCoder
协议作为选项! (这实际上是解决方案1
,但由第三方审查和维护。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.