鉴于:我有两个相同类型的结构,符合Codable Protocol。 结构可以是多级的(嵌套属性,当然也符合Codable)。该类型在实现时尚不清楚,因此我认为它是通用的,符合Codable。
一个对象是" base" (比如,从服务器收到),第二个(实际上是" base"的副本),但在应用程序内修改。
目的是:要发送保存新数据的请求,但只发送"差异"两个结构。因此,只有不同的字段才会出现在结果JSON中。
获取两个结构的JSON字符串并使用它们进行操作的简单方法是可以理解的,但似乎是最后机会的方法......
我已尝试使用Mirror和递归方法,但现在已经设法使其仅适用于第一级 - 在第二级嵌套中我已经丢失了嵌套属性的类型(如果struct或者数组),然后就不能把它投出来......
我想知道它是否可以用自定义编码器以某种方式制作?
P.S。:泛型类型应具有Optionals的所有属性,因此不应提供任何显式初始值设定项。
答案 0 :(得分:0)
而不是你的“最后机会方法” - 匹配JSON字符串 - 你可以使用JSONSerialization.jsonObject
将JSON数据转换为Foundation对象,并在更高的抽象级别上执行比较(如果这就是你首先是你的问题,然后抱歉 - 没关系。)
当然,您需要额外支付将Codable
个对象转换为数据,然后将该数据解析为对象层次结构的额外费用。