从 Jackson 2.2 的 ObjectMapper 打印 JSON

2022-08-31 07:12:45

现在我有一个实例,并希望获得一个漂亮的JSON。我的Google搜索的所有结果都提出了Jackson 1.x方法来做到这一点,我似乎找不到正确的,未弃用的2.2方法来做到这一点。尽管我不认为代码对于这个问题是绝对必要的,但我现在拥有的东西是这样的:org.fasterxml.jackson.databind.ObjectMapperString

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

答案 1

您可以通过在“喜欢”上设置来启用漂亮打印:SerializationFeature.INDENT_OUTPUTObjectMapper

mapper.enable(SerializationFeature.INDENT_OUTPUT);

答案 2

根据mkyong的说法,神奇的咒语是漂亮地打印JSONdefaultPrintingWriter

较新版本:

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);

希望这有帮助...