我有一个json
字符串,我想用jackson
漂亮地打印出来。一般而言,以下作品:
ObjectWriter w = new ObjectMapper()
.writer()
.withDefaultPrettyPrinter();
Object obj = new ObjectMapper().readValue(json, Object.class);
System.out.println(w.writeValueAsString(obj));
结果:
{
"myarray" : [ {
"field" : "val"
} ]
}
但是:我想得到的输出参数之间没有空格。那可能吗?
所需的输出:
{
"myarray":[{
"field":"val"
}]
}
最佳答案
是。您可以使用以下内容自定义DefaultPrettyPrinter
:
使用withoutSpacesInObjectEntries()
关闭空格
在对象条目内
将数组压头设置为DefaultPrettyPrinter.NopIndenter
,以便没有空格分隔数组值。
明智的代码,它看起来像:
DefaultPrettyPrinter pp = new DefaultPrettyPrinter()
.withoutSpacesInObjectEntries()
.withArrayIndenter(new DefaultPrettyPrinter.NopIndenter());
ObjectWriter w = new ObjectMapper()
.writer()
.with(pp);
它将以以下格式输出JSON:
{
"users":[{
"name":"u1",
"age":10
},{
"name":"u2",
"age":20
}]
}