如何在2个复杂对象之间创建差异的Json表示?

时间:2018-05-27 13:51:20

标签: android kotlin gson retrofit

Kotlin有哪些方法可以比较具有多个子对象的两个对象,并仅使用已更改的属性更新REST后端?

基本上,我们有一个具有许多子类的类(它们有自己的子类,依此类推),并且需要调用REST端点并发送Json来仅修补已更改的属性。

在我们的项目中,我们正在使用Gson的Retrofit。

1 个答案:

答案 0 :(得分:0)

想象一下,你有以下对象树(伪代码):

A {
B {
    C {
        a: 15
        b: 12
    },
    c: 4
},
d: 12

}

现在可能发生了一些变化,你需要检查一下。您的新JSON文件可能如下所示:

A {
B {
    C {
        a: 3
        b: 12
    },
    c: 4
},
d: 12

}

我建议创建对象并让它们自己检查更改,因为如果有任何更改以及它们具有哪些属性,它们会知道最佳:

A:
Changes changes(oldA) {
    Changes changes = b.changes(oldA.b)
    changes.add(Changes(d, oldA.d))
    return changes

}

这意味着您将拥有一个类更改,其行为类似于列表,并以JSON的形式提供更新,并且属于JSON的每个对象都将其值放在其中。

唯一留给你的是为这个列表考虑适当的JSON格式。