从Jackson 2.2的ObjectMapper中打印JSON

Ant*_*son 134 java json jackson

现在我有一个实例,org.fasterxml.jackson.databind.ObjectMapper并希望得到一个String漂亮的JSON.我的谷歌搜索的所有结果都提出了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
Run Code Online (Sandbox Code Playgroud)

gre*_*ker 263

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

mapper.enable(SerializationFeature.INDENT_OUTPUT);
Run Code Online (Sandbox Code Playgroud)

  • 我查看了我的一个项目,但似乎它也在这里:“常用功能”下的 https://github.com/FasterXML/jackson-databind (2认同)
  • 2.2.1这就是我所需要的:import org.codehaus.jackson.map.SerializationConfig.Feature; mapper.enable(Feature.INDENT_OUTPUT); (2认同)

hd1*_*hd1 46

mkyong,魔法咒语是defaultPrintingWriter漂亮打印JSON:

较新版本:

System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonInstance));
Run Code Online (Sandbox Code Playgroud)

旧版本:

System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonInstance));
Run Code Online (Sandbox Code Playgroud)

似乎我很快就跳了一下枪.你可以试试gson,它的构造函数支持漂亮的打印:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(someObject);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...

  • @AnthonyAtkinson在Jackson 2.3中有一个方法`ObjectMapper.writerWithDefaultPrettyPrinter()` (7认同)

Ria*_*ian 35

jackson API已更改:

new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
.writeValueAsString(new HashMap<String, Object>());
Run Code Online (Sandbox Code Playgroud)

  • 仍然可以(使用Jackson 2.7.6)使用`new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT,true).writer().writeValueAsString(new HashMap <String,Object>());`.您只需确保使用从配置的`ObjectMapper`获得的编写器. (3认同)