Как сравнить 2 JSONObject

170
20 ноября 2020, 05:10

С апи приходит объект, в нем есть org.json.simple.JSONObject. И из базы я достаю данные и преобразовываю то же в JSONObject. Если привести оба объекта к строке и сравнить через equals, то результат будет положительный (true). Я использую @EqualsAndHashCode(of = {"myfield"}) из Ломбока.

Но если я сделаю так:

MyJsonObject.equals(MyJsonObject2)

я получу отрицательный результат.

Путем эмпирических испытаний выяснил, что если JSON состоит из 2х пар ключь-значение, по метод equals на них работает. Но если сравнивать одинаковые объекты с тремя парами значений, то equals всегда выдает false.

Та же самая ситуация, если я попытаюсь преобразовать к HashMap и сравнить через equals. И тут совсем ни при чем аннотации, которые я вешаю на классы. Как вообще такое может быть, что два абсолютно одинаковых объекта эквивалентны, если в них по 2 пары, и не эквивалентны, если 3? Я что-то не понимаю?

Как сравнивать два объекта JSONObject?

Answer 1

Дело в том, что когда я получаю объект из БД, то одно из значений его ключей, например "IntValue": 1 - считается как Long тип (1 - Long). А когда я принимаю запрос эта же еденица считается Int типом. Из-за того что типы разные, хоть и значения одинаковые, объекты не раны. Вывод: в таких местах надо смотреть на типы.

READ ALSO
JavaFX + Spring: возможно ли избежать жесткого связывания главного приложения и контроллера?

JavaFX + Spring: возможно ли избежать жесткого связывания главного приложения и контроллера?

В данном учебном примере предлагается создать тестовые данные прямо в главном классе приложения, а также вызывать из него метод JavaFX-контроллера...

131
Как сделать генерацию чисел от 0 до 1

Как сделать генерацию чисел от 0 до 1

Как сделать генерацию чисел от 0 до 1Если выпадет 0 то человек победил и в консоле выводит это

130
Получение текста с владки JTabbedPane

Получение текста с владки JTabbedPane

использую JTabbedPane в "текстовом редакторе" и хне знаю как получить содержимое вкладки JTabbedPaneПробовал делать через getTabComponentAt() он возвращает...

188
Как лучше поступить с условиями?

Как лучше поступить с условиями?

У меня есть переменная d которую пользователь задает сам, она принимает значения от 1 до 99, каждое число должно исполнять свою роль, например...

163