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 вы должны перебирать свои коллекции и сравнивать каждую подчиненную сущность и добавлять все различия в родительский объект результата сравнения.