在 Rest Assured 中,getString() 将 4 位数字后的小数值四舍五入

In Rest Assured, getString() round off the decimal values after 4 digit

我有场景,我们需要从 json 响应正文中读取纬度和经度。 纬度和经度的值如下

"data": [{
  "city": "Mumbai",
  "country": "India",  
  "latitude": 19.0886993408,
  "longitude": 72.8678970337
  
}

当我们尝试通过使用 JSONPATH 读取纬度和经度来验证 JSON 响应时 使用 getString() 然后它将小数点后 4 位数字四舍五入。

下面是java

中的代码
String key = item.getKey();
String value = item.getValue();
JsonPath jsonPathEvaluator = response.jsonPath();
String strjson = jsonPathEvaluator.getString(key).toString().replaceAll("\[\](){}]", "");

输出显示:

纬度:-19.0887 而不是 19.0886993408

您可以尝试使用JsonPath.config,如前所述here

您可以使用它为 JsonPath 提供自定义配置。 在这里,我只是想将我的数字数据转换为长小数范围双倍。

String key = item.getKey();
String value = item.getValue();
JsonPath jsonPathEvaluator = response.jsonPath();
JsonPath.config = new JsonPathConfig(JsonPathConfig.NumberReturnType.DOUBLE);
String strjson = jsonPathEvaluator.getString(key).toString().replaceAll("\[\](){}]", "");


/* String json = "{\n" +
"  \"data\": {\n" +
"    \"city\": \"Mumbai\",\n" +
"    \"country\": \"India\",\n" +
"    \"latitude\": 19.0886993408,\n" +
"    \"longitude\": 72.8678970337\n" +
"  }\n" +
"}";
JsonPath jsonPath = JsonPath.from(json);
JsonPath.config = new JsonPathConfig(JsonPathConfig.NumberReturnType.DOUBLE);
double strjson = jsonPath.get("data.latitude");
    
System.out.println(String.valueOf(strjson)); */

对我来说,打印结果低于输出。

19.0886993408