使用thymeleaf在浏览器中进行Prettyprinting Spring Boot JSON RESTful响应

时间:2019-06-10 09:22:42

标签: json spring-boot thymeleaf

我想以易于理解的格式在浏览器中打印来自RESTful请求的json响应,同时保持json的换行符和缩进。

我当前的代码将json响应保存在一个String中,并以任何格式打印该字符串。

在RESTFulController.java

@Controller
public class RESTFulControllerController {

    @RequestMapping("myrequest")
    public String myRequest(Model model) {

        //--> Initializations
        RestTemplate rest_template= new RestTemplate();
        String url = "https://example.com/api";

        //--> Create http request
        HttpHeaders headers = new HttpHeaders();
        MultiValueMap<String, String> body_map = new LinkedMultiValueMap<>();
        body_map.add("resource_id", "value_of_resource_id");
        HttpEntity<MultiValueMap<String, String>> request_entity = new HttpEntity<>(body_map, headers);

        //--> Post http request 
        String response = rest_template.postForObject(url, request_entity, String.class);

        //--> Add data for display
        model.addAttribute("response", response);

        return "print_response";

}

在templates / print_response.html

<body>
    [[${response}]] 
</body>

不需要进一步处理响应,它将仅用于浏览器中的可视化。在控制器或模板中进行格式化是否更好?以及如何?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试将响应字符串转换为json对象,然后再转换为缩进字符串:

ObjectMapper objectMapper = new ObjectMapper();
Object json = objectMapper.readValue(response, Object.class);
String indented = objectMapper.writerWithDefaultPrettyPrinter()
                               .writeValueAsString(json);