如何不在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 = { }; .... }
自Jackson 2.0.0(2012年3月25日)以来,您还可以使用@JsonInclude
批注在每个字段或每个类的基础上控制它。
public class MyObject { @JsonInclude(Include.NON_EMPTY) private List proxyIds; ... }
- JSON:JsonMappingException尝试反序列化具有空值的对象
- 你如何覆盖Jackson 2.0中的null序列化器?
- jackson对多种类型的反序列化
- 在JavaEE应用程序中使用Jackson作为JAXB-JSON处理器
- 使用Jackson(Joda-Time模块)进行DateTime反序列化的默认时区
- 如何映射Mixins以嵌套JSON响应
- 如何让泽西/jackson序列化空列表; 单个元素列表作为数组
- java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
- 使用不同的对象名称映射JSON