JSONCompareResult не работает с GSON для целых чисел примитивного типа.Зачем? - PullRequest
0 голосов
/ 11 июня 2018

Я играл с библиотеками Gson и JSONAssert , когда столкнулся с этой проблемой.

У меня есть следующая функция для сравнения двух целых чисел:

    private static void runCompareInts(int source, int target){

        JSONCompareResult result = JSONCompare.compareJSON(new Gson().toJson(source),
            new Gson().toJson(target),
            JSONCompareMode.NON_EXTENSIBLE);

        if (CollectionUtils.isEmpty(result.getFieldFailures())) {
            System.out.println("Objects are same.");
        } else {
            System.out.println("Objects are not the same. Difference: " + result);
        }

    }

Когда я запускаю runCompareInts(1, 2), в результате я получаю "Objects are same.", чего не должно быть.

Я обнаружил, что new Gson().toJson(1) возвращает строку "1", которая является допустимой строкой JSON, и, следовательно, сравнение должно выполняться правильно и перейти в блок else.

Сравнение целых чисел с помощью JSONAssert.assertNotEquals("1", "2", true) не приводит ни к какому исключению.Это означает, что преобразованные значения Gson не являются проблемой.

Может кто-нибудь сказать мне, в чем ошибка с моей runCompareInts() функцией?Спасибо.

РЕДАКТИРОВАТЬ: JSONAssert.assertNotEquals(new Gson().toJson(source), new Gson().toJson(target), true) также отлично работает.

1 Ответ

0 голосов
/ 11 июня 2018

Используйте result.isFailureOnField() внутри блока if.

Я вижу проблему с сообщениями в библиотеке jsonassert, метод compareJson(final JSONString expected, final JSONString actual) класса JSONCompare возвращает пустое сообщение об ошибке при ошибке.

...