优化JaxRS/Jackson以排除空值,空列表,数组

Bry*_*ung 6 json jax-rs jackson

我们正在使用JaxRS和Jackson向我们的客户发送数据.由于客户端是Javascript,如果没有该属性的有效值(默认情况下JaxRS默认),我们实际上不需要发送空值或空数组.有没有解决的办法?

一个例子.JaxRS发送此信息:

{"prop1":[],"prop2":null,"prop3":"foo"}

我们可以在哪里得到

{"prop3":"foo"}

Sta*_*Man 7

有多种方法可以实现这一目标,具体取决于:注释@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)是一种方式.或者,因为您还想删除空列表,数组,所以将NON_NULL更改为NON_EMPTY.

也可以将其配置为默认行为; 在杰克逊1.9:

mapper.setSerializationConfig(mapper.getSerializationConfig().withSerializationInclusion(
  JsonSerialize.Inclusion.NON_EMPTY));
Run Code Online (Sandbox Code Playgroud)

在Jackson 2.0中,有点简单:

mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这些方法仅限Jackson,而不是使用JAX-RS独立于供应商. (2认同)
  • 现在已弃用在 @JsonSerialize 中指定“include”,应该使用 @JsonInclude(JsonInclude.Include.NON_NULL) (2认同)