如何从jackson2.2的ObjectMapper漂亮打印JSON?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

现在我有一个实例,org.fasterxml.jackson.databind.ObjectMapper并希望得到一个String漂亮的JSON。我的Google搜索的所有结果都提供了Jackson 1.x的方法,我似乎无法找到在2.2中做到这一点的适当的,不被弃用的方式。尽管我不相信代码对于这个问题是绝对必要的,但这是我现在所拥有的:

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
System.out.println("\n\n----------REQUEST-----------");
StringWriter sw = new StringWriter();
mapper.writeValue(sw, jsonObject);
// Want pretty version of sw.toString() here
提问于
用户回答回答于

你可以通过设置SerializationFeature.INDENT_OUTPUTObjectMapper喜欢的方式启用漂亮打印:

mapper.enable(SerializationFeature.INDENT_OUTPUT);
用户回答回答于

mkyong介绍,这个是defaultPrintingWriter为了打印JSON

较新版本:

System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonInstance));

旧版本:

System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonInstance));

看起来我很快就有点跳了起来。你可以试试gson,它的构造函数支持漂亮的打印

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(someObject);

扫码关注云+社区