如何从 RestTemplate 获得漂亮的格式化输出?
How to get pretty formatted output from RestTemplate?
以下是我的 Spring 启动应用程序对服务器调用之一的响应,
String result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class).getBody();
然后我返回给客户,
return ResponseEntity.ok().body(result);
在 postman 中我看到 json 印有许多 \"
格式相当漂亮。
是否需要更改响应端才能在 Postman 中看到格式化的输出?
示例 Postman 输出:
"{\"records\":[{\"pkg_name\":\"com.company.app\",\"start_time\":1580307656040,\"update_time\":12345,\"min\":0.0,\"create_time\":1580307714254,\"time_offset\":21600000,\"datauuid\":\"xyz\",\"max\":0.0,\"heart_beat_count\":1,\"end_time\":1580307656040,\"heart_rate\":91.0,\"deviceuuid\":\"abc\"}]}" ...
预期输出:没有 \"
的漂亮格式
最好的方法是创建 bean 并将此 String 反序列化到它。
之后,您将拥有具有所有好处的结构化对象。 (例如漂亮的 toString 方法)
在我看来 String result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class).getBody();
returns 双重编码 json 字符串。逃脱并恢复正常 json
String unwrappedJSON = objectMapper.readValue(result, String.class);
return ResponseEntity.ok().body(unwrappedJSON);
编辑
如果结果正常json并且没有双重转义,你可以试试:
JsonNode result = restTemplate.exchange(url, HttpMethod.GET, entity, JsonNode.class).getBody();
return ResponseEntity.ok().body(result);
以下是我的 Spring 启动应用程序对服务器调用之一的响应,
String result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class).getBody();
然后我返回给客户,
return ResponseEntity.ok().body(result);
在 postman 中我看到 json 印有许多 \"
格式相当漂亮。
是否需要更改响应端才能在 Postman 中看到格式化的输出?
示例 Postman 输出:
"{\"records\":[{\"pkg_name\":\"com.company.app\",\"start_time\":1580307656040,\"update_time\":12345,\"min\":0.0,\"create_time\":1580307714254,\"time_offset\":21600000,\"datauuid\":\"xyz\",\"max\":0.0,\"heart_beat_count\":1,\"end_time\":1580307656040,\"heart_rate\":91.0,\"deviceuuid\":\"abc\"}]}" ...
预期输出:没有 \"
最好的方法是创建 bean 并将此 String 反序列化到它。 之后,您将拥有具有所有好处的结构化对象。 (例如漂亮的 toString 方法)
在我看来 String result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class).getBody();
returns 双重编码 json 字符串。逃脱并恢复正常 json
String unwrappedJSON = objectMapper.readValue(result, String.class);
return ResponseEntity.ok().body(unwrappedJSON);
编辑
如果结果正常json并且没有双重转义,你可以试试:
JsonNode result = restTemplate.exchange(url, HttpMethod.GET, entity, JsonNode.class).getBody();
return ResponseEntity.ok().body(result);