如何从 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);