在“确保放心”中,getString将四位数后的十进制值四舍五入

问题描述

我有一个场景,我们需要从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

解决方法

您可以按照here

尝试使用JsonPath.config。

使用它可以为JsonPath提供自定义配置。 在这里,我只是试图用长十进制范围double转换数值数据。

TIME     USER   LASTUSER
083527   dph    dlmk
084119   dlmk   dlmk
083527   dph    dlmk
074747   dph    dlmk

对我来说,它打印在输出下方。

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)); */