Как сравнить два джейсона, например
[{id:5, color:red}, {id:8, color:blue}{id:9, color:blue}{id:2, color:green}] и {[id:2, status:1], [id:8, status:2],[id:100, status:1]}
Ожидаю что-то такое:
Совпадает 2 элемента, с id=2 и id=8.
Не найдены элементы: id = 5, id = 9
Недостающие элементы: id:100.
То есть мне нужна полная разница между двумя json объектами по id, при этом сортировки по id нет, и у каждого элемента есть еще другие параметры кроме id (которые могут различаться).
На основании каких правил мы должны определять степень соответствия элементов, или их отсутствия?
Из ваших примеров и ожиданий слабо прослеживается хоть какая-то нить:
Каким образом отсюда следует, что они совпадают? У них разные цвета и статусы. Или имеется ввиду их наличие в обоих массивах?
Не найдены где? Во втором массиве? Тогда так и указывайте, что приоритет поиска - вхождение элементов с id первого массива во второй.
Опять-таки, недостающие где? В первом массиве?
Что-то я совсем потерял суть. В любом случае вам придется создавать POJO, характеризующий оригинальный объект для сравнения. Далее читаете респонс в массив из этих самых POJO и пишете кастомные comparators на основании той логики, которая вам нужна. В Java 8 можно достаточно просто стримом пройтись по коллекции и отфильтровать объекты по заданному кастомному comparator’у.
Нет, различия там могут быть в элементах, но везде есть один неизменный атрибут - id. Хотелось бы сравнить только по нему, остальные как раз надо как то игнорировать.
Можно сконвертировать при помощи jackson в коллекцию maps или объектов определенного типа. Затем сравнить 2 коллекции при помощи ReflectionAssert из unitils.