【问题标题】:Ignore Empty Collections during Serialisation在序列化期间忽略空集合
【发布时间】:2017-10-16 13:31:15
【问题描述】:

我读过类似@JsonInclude to ignore null values 的问题。 这适用于实体中的常规字段,但不适用于集合。如果实体中的集合为空,Json 序列化会给出一个空值。

如何对集合进行等效的忽略?

【问题讨论】:

  • 首先在您的集合中包含空值有什么意义?
  • 你的意思是如果一个实体有一个列表,而这个列表有一个空对象?
  • 或者你的意思是一个空集合?
  • 我的意思是空集合。该集合尚未初始化,将在稍后使用数据初始化。编辑问题以使其清楚。
  • null 不同于空列表

标签: java json spring serialization jackson


【解决方案1】:

从 Jackson 2.x 开始,它提供了@JsonInclude 注释,用于控制整个类的序列化,或者根据序列化期间的值控制其各个字段的序列化。它将以下注释识别为:

Include.NON_NULL 表示只应序列化非空属性。

Include.NON_EMPTY 表示只应序列化非 null 和非空属性。这其实是Include.NON_NULL的超集

因此,集合 Include.NON_EMPTY 将像

@JsonInclude(Include.NON_EMPTY)
private Collection field;

或者您可以将它放在类上以影响整个模型,例如

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Foo {
}

【讨论】:

    【解决方案2】:

    用注解试试

    @JsonInclude(Include.NON_EMPTY)
    private Collection field;
    

    【讨论】:

    • 它有效 - 在我的版本中它是 @JsonInclude(JsonInclude.Include.NON_EMPTY)。我的错,我认为它们是空集合而不是空集合。
    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2015-11-15
    • 2017-06-04
    • 2019-05-14
    相关资源
    最近更新 更多