对于基本类型整数,JSONCompareResult不适用于GSON。为什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于基本类型整数,JSONCompareResult不适用于GSON。为什么?相关的知识,希望对你有一定的参考价值。
当我遇到这个问题时,我正在玩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)
返回String "1"
,这是一个有效的JSON字符串,因此比较应该正确进行并进入else
块。
使用JSONAssert.assertNotEquals("1", "2", true)
比较整数不会导致任何异常。这意味着Gson转换值不是问题。
谁能告诉我我的runCompareInts()
功能的错误是什么?谢谢。
编辑:JSONAssert.assertNotEquals(new Gson().toJson(source), new Gson().toJson(target), true)
也工作正常。
答案
如果阻止,请使用内部的result.isFailureOnField()
。
我在jsonassert库中看到了消息的问题,compareJson(final JSONString expected, final JSONString actual)
类的方法JSONCompare
在失败时返回空错误消息。
以上是关于对于基本类型整数,JSONCompareResult不适用于GSON。为什么?的主要内容,如果未能解决你的问题,请参考以下文章