我有两个 JSON 对象表示为 Java
String
s
预期:
{
"id" : "1234567"
"balance" : "123"
}
我将其转换为 JSON 对象并尝试使用输出 JSON 对其进行验证 实际:
{
"id" : "1234567"
"balance" : "123.00"
}
我在用
JSONAssert.assertequal("incorrect json",actual,expected,false);
这是失败的预期
123
并得到123.00
.
该怎么做才能将这两个值视为相同。简而言之,我如何使用自定义比较器,请注意我不想从我的验证中排除/抑制此属性
Java类中的balance字段应该定义为int(或float),而不是String。
如果适用,应在任何 JsonSchema、swagger 或 open-api 定义中将其定义为“数字”。
“预期”可以定义为以下任一项,
JSONAssert.assertEquals
将在没有自定义比较器的情况下工作 - 请参阅JSONassert 介绍 部分 3.4 逻辑比较:
{
"id" : "1234567"
"balance" : 123
}
或
{
"id" : "1234567"
"balance" : 123.00
}
如果您无法控制字段类型,那么余额字段的比较器将如下所示:
public int compare(String firstBalance, String secondBalance) {
return
Float.compare(Float.parseFloat(firstBalance), Float.parseFloat(secondBalance));
}