如何不在jackson发送空集合

我有一个被强制序列化的对象:

{ "label" : "label", "proxyIds" : [ ], "childIds" : [ 161, 204, 206, 303, 311 ], "actionIds" : [ 157, 202 ], } 

proxyIds是java对象中的空(非空)集合。

如何将Jackson配置为不在json中包含该对象?

我希望行为类似于xml / soap中的“unwrapped”集合,如果集合为空,则不包括在内。 我不需要区分null和empty集合,并希望减小json有效负载的大小。

这可能是一个长镜头但是如何使用Inclusions和定义NON_DEFAULT作为包含属性。 文档说:

“值表示只包含具有与默认设置不同的值的属性(意味着当Bean使用其无参数构造函数构造时具有的值)。”

因此,如果默认值为空数组,则应跳过它。

就像是:

 ObjectMapper mapper = new ObjectMapper(); mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_DEFAULT); public class Test { String[] array = { }; .... } 

http://jackson.codehaus.org/1.1.2/javadoc/org/codehaus/jackson/map/annotate/JsonSerialize.Inclusion.html

自Jackson 2.0.0(2012年3月25日)以来,您还可以使用@JsonInclude批注在每个字段或每个类的基础上控制它。

 public class MyObject { @JsonInclude(Include.NON_EMPTY) private List proxyIds; ... }