JSONAssert 将如何处理 int 5 和 double 5.0 相同

问题描述 投票:0回答:1

我有两个 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 json equals assert jsonassert
1个回答
0
投票

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));
    }
© www.soinside.com 2019 - 2024. All rights reserved.