[英]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的打印效果不佳。 我想念什么?
你可以俯瞰事实@ResponseBody
用String
返回类型会导致StringHttpMessageConverter
写的值返回HTTP响应体。 此HttpMessageConverter
将产生text/plain
的content-type
。 我认为浏览器不会渲染换行符或修剪它们之间的空格。 您漂亮的印刷品迷路了。
您应该做的是注册自己的GsonHttpMessageConverter
或MappingJackson2HttpMessageConverter
,将其设置为进行漂亮的打印。 然后将您的处理程序方法的返回类型更改为List<Locate>
并直接返回locations
。 这些HttpMessageConverter
实现实现了application/json
,浏览器应按HttpMessageConverter
呈现。
( Gson
和ObjectMapper
实例是线程安全的。绝对没有理由为每个请求重新实例化这些类。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.