簡體   English   中英

使用Spring 4漂亮地打印JSON

[英]Pretty print JSON with Spring 4

我有一個控制器類,看起來像:

@RequestMapping(value="/enter/two-factor/blacklist", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody String getBlacklist(int days) {
    List<Honey> honey = honeyService.fetchAllPings(days);
    List<Locate> locations = honeyService.parseDistinctLocations(honey);
    return GeneralUtil.convertToJson(locations);
}

'GeneralUtil.convertToJson()'方法使用以下代碼返回漂亮的字符串:

public static String convertToJson(List<Locate> locations){
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    String json = "";
    try {
        json = gson.toJson(new Blacklist(locations));
    } catch (Exception e){
        e.printStackTrace();
    }
    JsonParser jp = new JsonParser();
    JsonElement je = jp.parse(json);
    String prettyJsonString = gson.toJson(je);
    System.out.println(prettyJsonString);
    return prettyJsonString;
}

但是,當頁面呈現時,JSON的打印效果不佳。 我想念什么?

你可以俯瞰事實@ResponseBodyString返回類型會導致StringHttpMessageConverter寫的值返回HTTP響應體。 HttpMessageConverter將產生text/plaincontent-type 我認為瀏覽器不會渲染換行符或修剪它們之間的空格。 您漂亮的印刷品迷路了。

您應該做的是注冊自己的GsonHttpMessageConverterMappingJackson2HttpMessageConverter ,將其設置為進行漂亮的打印。 然后將您的處理程序方法的返回類型更改為List<Locate>並直接返回locations 這些HttpMessageConverter實現實現了application/json ,瀏覽器應按HttpMessageConverter呈現。

GsonObjectMapper實例是線程安全的。絕對沒有理由為每個請求重新實例化這些類。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM