目前我正在使用Jackson JSON Processor来编写首选项数据以及文件内容,主要是因为我希望高级用户能够修改/备份这些数据。杰克逊非常棒,因为它非常容易使用,并且显然表现得很好(参见here),然而我似乎遇到的唯一问题是当我运行myObjectMapper.writeValue(myFile, myJsonObjectNode)
时它会写出所有的ObjectNode
到一行的数据。我想要做的是将JSON格式化为更加用户友好的格式。
例如,如果我将一个简单的json树传递给它,它将编写以下内容:
{"testArray":[1,2,3,{"testObject":true}], "anotherObject":{"A":"b","C":"d"}, "string1":"i'm a string", "int1": 5092348315}
我希望它在文件中显示为:
{
"testArray": [
1,
2,
3,
{
"testObject": true
}
],
"anotherObject": {
"A": "b",
"C": "d"
},
"string1": "i'm a string",
"int1": 5092348315
}
有没有人知道我可以用杰克逊这样做的方法,还是我必须从杰克逊那里获得JSON字符串并使用另一个第三方lib来格式化它?
提前致谢!
答案 0 :(得分:5)
尝试像这样创建Object Writer
ObjectWriter writer = mapper.defaultPrettyPrintingWriter();
答案 1 :(得分:4)
您需要事先按如下方式配置映射器:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
mapper.writeValue(myFile, myJsonObjectNode);
答案 2 :(得分:2)
根据上述评论,这对我很有用,
Object json = mapper.readValue(content, Object.class);
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json);
内容是您的JSON字符串响应
杰克逊版本:2.12答案 3 :(得分:1)
要在Jackson 2.0.2及更高版本中启用标准缩进,请使用以下命令:
ObjectMapper myObjectMapper = new ObjectMapper();
myObjectMapper.enable(SerializationFeature.INDENT_OUTPUT);
myObjectMapper.writeValue(myFile, myJsonObjectNode)