Apache Commons DiffBuilder, глубокое сравнение

Мы пытаемся использовать Appache Commons DiffBuilder а также ReflectionDiffBuilder в версии 3.7` для сравнения двух сложных объектов друг с другом.

Для простого объекта он работает действительно хорошо, но я не могу заставить его работать со свойствами, которые являются списком других сложных объектов, которые могут снова содержать сложный объект.

Позвольте мне объяснить лучше, если у нас есть для примера этот объект (мы представим его для простоты с помощью объекта json):

{
    "id": 1,
    "name": "Master1",
    "details": [{
        "id": 1,
        "name": "Master1.Detail1"
    }, {
        "id": 2,
        "name": "Master2.Detail2",
        "subDetail": [{
            "id1": 1,
            "name": "Master2.Detail2.SubDetail1"
        }]
    }]
}

В этом случае, если мы изменим name в SubDetail1 и сравнивая старый с новым объектом, мы также должны быть уведомлены, что свойство на третьем уровне 3 сложных объектов изменилось.

Это возможно с библиотекой Apache? Вроде не из коробки?

0 ответов

В родительском методе diff вы должны перебирать свои коллекции и сравнивать каждую подчиненную сущность и добавлять все различия в родительский объект результата сравнения.

Другие вопросы по тегам