在 RestAssured jsonPathEvaluator 中,没有为双值提供正确的值
Posted
技术标签:
【中文标题】在 RestAssured jsonPathEvaluator 中,没有为双值提供正确的值【英文标题】:In RestAssured jsonPathEvaluator not giving correct values for double value 【发布时间】:2022-01-01 19:06:53 【问题描述】:我有一个如下所示的 json 响应:-
"someField": [
"abc": "abcdId"
],
"someId": "pqrsId",
"oneTier":
"startThreshold": 25000,
"endThreshold": 74999.99
,
"nextTier":
"startThreshold": 75000,
"endThreshold": 149999.99
当我尝试打印时
response.getBody().asString()
我可以看到 nextTier.endThreshold 的值为 '14999.99' 但是当我这样做时
response.getBody().jsonPath().get("nextTier.maxThreshold").toString();
我看到的值为 14999.98'。
无法弄清楚为什么会发生这种情况。
【问题讨论】:
您的 json 中没有maxThreshold
。你的意思是endThreshold
?
【参考方案1】:
默认配置JsonPathConfig
定义NumberReturnType = FLOAT_AND_DOUBLE
,这样在类型间转换时可能会丢失精度。
幸运的是,RestAssured 为此类问题提供了解决方案。可以配置NumberReturnType = BIG_DECIMAL
,然后保存浮点数的精度。
JsonPath.config = new JsonPathConfig().numberReturnType(JsonPathConfig.NumberReturnType.BIG_DECIMAL);
BigDecimal endThreshold = JsonPath.with(json).get("nextTier.endThreshold");
System.out.println(endThreshold.doubleValue());
//149999.99
【讨论】:
以上是关于在 RestAssured jsonPathEvaluator 中,没有为双值提供正确的值的主要内容,如果未能解决你的问题,请参考以下文章
收到响应后,是不是可以选择删除 REST API(RestAssured) 中请求中设置的多部分内容?
RestAssured:如何检查 json 数组响应的长度?