Pretty printing JSON from Jackson 2.2's ObjectMapper
You can enable pretty-printing by setting the SerializationFeature.INDENT_OUTPUT
on your ObjectMapper
like so:
mapper.enable(SerializationFeature.INDENT_OUTPUT);
According to mkyong, the magic incantation is defaultPrintingWriter
to pretty print JSON:
Newer versions:
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonInstance));
Older versions:
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonInstance));
Seems I jumped the gun a tad quickly. You could try gson, whose constructor supports pretty-printing:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(someObject);
Hope this helps...
The jackson API has changed:
new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
.writeValueAsString(new HashMap<String, Object>());
the IDENT_OUTPUT did not do anything for me, and to give a complete answer that works with my jackson 2.2.3 jars:
public static void main(String[] args) throws IOException {
byte[] jsonBytes = Files.readAllBytes(Paths.get("C:\\data\\testfiles\\single-line.json"));
ObjectMapper objectMapper = new ObjectMapper();
Object json = objectMapper.readValue( jsonBytes, Object.class );
System.out.println( objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString( json ) );
}