Jackson JsonNode を JSONテキストとして出力する

ObjectMapper の writeValue で、ByteArrayOutputStream に出力して byte[] → String

JSONテキストして整形して出力したいので、DefaultIndenter でインデント詳細を指定して
ObjectMapper の writer で、DefaultPrettyPrinter を指定したうえで、writeValue を実行する。

import com.fasterxml.jackson.core.util.DefaultIndenter;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter.Indenter;
import com.fasterxml.jackson.databind.ObjectMapper;
DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
Indenter indenter = new DefaultIndenter();
printer.indentObjectsWith(indenter);
printer.indentArraysWith(indenter);

JsonNode をインデントに従って出力

OutputStream bo = new ByteArrayOutputStream();
mapper.writer(printer).writeValue(bo, jsonnode);
bo.flush();
bo.close();
String res =bo.toString();

DefaultIndenter のコンストラク DefaultIndenter(String indent, String eol) で、
indent 文字列に好きな長さの空白、eolは、"{" , "}" と要素の区切り文字列、"\n" などを指定する。
デフォルトは空白2個と、"\n" である。