pretty print JSON出力を有効にする方法(Jackson)
このチュートリアルでは、Jacksonライブラリを使用して、JSONオブジェクトとStringをコンソールやJSPページに表示する方法を説明します。
プレプリントJSONオブジェクト
Objectを変換し、その出力をJSON形式で出力する例
User user = new User(); //...set user data ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(user));
しかし、jsonの出力はコンパクトモードです。
{"age":29,"messages":["msg 1","msg 2","msg 3"],"name":"mkyong"}
きれいな印刷を有効にするには、 `writerWithDefaultPrettyPrinter`を使います。
ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user));
出力
{ "age" : 29, "messages" :["msg 1", "msg 2", "msg 3"], "name" : "mkyong" }
2.プリティプリントJSON文字列
これはややこしいです、 `writerWithDefaultPrettyPrinter`をもう一度使ってみてください。
String test = "{\"age\":29,\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"mkyong\"}"; System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(test));
出力は、私たちが望むものではなく、jsonはまだコンパクトモードです。
"{\"age\":29,\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"mkyong\"}"
これを解決するには、JSON文字列をかなり前にObjectにバインドしてください。
String test = "{\"age\":29,\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"mkyong\"}"; Object json = mapper.readValue(test, Object.class); System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json));
出力
{ "age" : 29, "messages" :["msg 1", "msg 2", "msg 3"], "name" : "mkyong" }
JSPページでのJSONのプリティプリント
JSPページや他のHTMLページでJSONデータをきれいに印刷するには、JSONデータを `<pre>`タグで囲みます。この例では、Spring MVCとJSPページを使用しています。
コントローラクラス
@Controller @RequestMapping("/anything") public class AdminController { @RequestMapping(method = RequestMethod.GET) public ModelAndView index() { String test = "{\"age\":29,\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"mkyong\"}"; Object json = mapper.readValue(test, Object.class); ModelAndView modelandView = new ModelAndView("viewname"); modelandView.addObject("output", mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json)); return modelandViewl; } }
HTMLページ。 +
<pre> $ {output} </pre>
`
参考文献
-
http://jackson.codehaus.org/
[Jackson – 高性能JSON
プロセッサ。]。
http://jackson.codehaus.org/1.9.0/javadoc/org/codehaus/jackson/map/ObjectMapper.html
[ObjectMapper
JavaDoc]