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]