Как создать Json представление diff между 2 сложными объектами? - PullRequest
0 голосов
/ 27 мая 2018

Как в Kotlin можно сравнить два объекта, которые имеют много дочерних объектов, и обновить бэкэнд REST только с измененными свойствами?

По сути, у нас есть класс, который имеет много дочерних классов (которыеиметь свои собственные дочерние классы и т. д.) и должны вызывать конечную точку REST и отправлять Json для исправления только те свойства, которые изменились.

В нашем проекте мы используем Retrofit с Gson.

1 Ответ

0 голосов
/ 27 мая 2018

Представьте, что у вас есть следующее дерево объектов (псевдокод):

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

}

Это означает, что у вас будет класс Changes, который ведет себя как список и предлагает обновление в форме JSON и каждого объекта, который является частьюJSON помещает в него свои значения.

Единственное, что вам остается, это подумать о подходящем формате JSON для этого списка.

...