このチュートリアルでは、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>

`