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" である。