问题描述
我有一个场景,我们需要从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)); */