Я играл с библиотеками 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)
также отлично работает.