我有一个对象被巧妙地序列化为:
{
"label" : "label",
"proxyIds" : [ ],
"childIds" : [ 161, 204, 206, 303, 311 ],
"actionIds" : [ 157, 202 ],
}
该proxyIds是java对象中的空(非空)集合。
如何配置Jackson根本不在json中包含该对象?
我希望行为类似于xml / soap中的“unwrapped”集合,如果集合为空,则不包括在内。我不需要区分null和empty集合,并希望减小json有效负载的大小。
答案 0 :(得分:36)
自Jackson 2.0.0(2012年3月25日)以来,您还可以使用@JsonInclude
annotation来控制每个字段或每个类别。
public class MyObject {
@JsonInclude(Include.NON_EMPTY)
private List<Integer> proxyIds;
...
}
答案 1 :(得分:14)
这可能是一个长镜头,但如何使用Inclusions和定义NON_DEFAULT作为包含属性。文档说:
“值,表示只包含值与默认设置不同的属性(意味着Bean使用无参数构造函数构造时的值)。”
因此,如果默认值为空数组,则应跳过它。
类似的东西:
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_DEFAULT);
public class Test {
String[] array = { };
....
}