LoginSignup
2
3

More than 3 years have passed since last update.

Jacksonで良い感じに整形してシリアライズする

Posted at

JavaでJSONにシリアライズしたいときはJSON-Bだと力不足なのでJacksonを使う事が多いのだけど、いつも書き方忘れるのでメモ。

整形せずにシリアライズする

データ交換用に整形せずにシリアライズするパターン。通常はこれ。

var item = Map.of("parent", Map.of("child", List.of("a", "b", "c")));
var json = new ObjectMapper().writeValueAsString(item);

結果

{"parent":{"child":["a","b","c"]}}

整形してフォーマットを綺麗にしたい場合 その1

画面出力や設定ファイル用にフォーマットを整えたい場合. INDENT_OUTPUTを使う

var item = Map.of("parent", Map.of("child", List.of("a", "b", "c")));

var mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);

var json = mapper.writeValueAsString(item);

結果

{
  "parent" : {
    "child" : [ "a", "b", "c" ]
  }
}

整形してフォーマットを綺麗にしたい場合 その2

さらに要素の配列を改行付きで表示したい場合。要素が長い時とか用。PrettyPrinterとSYSTEM_LINEFEED_INSTANCEを使う。

var item = Map.of("parent", Map.of("child", List.of("a", "b", "c")));

var printer = new DefaultPrettyPrinter();
printer.indentArraysWith(DefaultIndenter.SYSTEM_LINEFEED_INSTANCE);

var json = new ObjectMapper().writer(printer).writeValueAsString(item);

結果

{
  "parent" : {
    "child" : [
      "a",
      "b",
      "c"
    ]
  }
}
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3