忽略空集合在序列化期间

4
我已经阅读了这样的问题@JsonInclude 忽略 null 值。 对于实体中的常规字段,这对我有效,但对于集合类型则无效。在实体内某个空的集合类型的情况下,Json序列化会给出 null 值。
如何在集合类型中实现忽略等效操作?

你的集合中为什么要有空值呢? - Sean Patrick Floyd
1
你的意思是如果一个实体有一个List,而这个List中有一个空对象? - pvpkiran
或者你的意思是一个空集合? - Zeromus
我的意思是空集合。该集合尚未初始化,并将在稍后的时间点使用数据进行初始化。修改问题以使其更清晰。 - HopeKing
null与空列表不同。 - pvpkiran
2个回答

8
尝试使用注释。
@JsonInclude(Include.NON_EMPTY)
private Collection field;

它可以工作 - 在我的版本中,它是@JsonInclude(JsonInclude.Include.NON_EMPTY)。我的错,我把它们当作空集合而不是空的集合。 - HopeKing

2
Jackson 2.x 起,提供了 @JsonInclude 注释来控制在序列化期间基于其值序列化整个类或其各个字段。它识别以下注释:

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

Include.NON_EMPTY 表示仅序列化非空且非空字符串的属性。这实际上是 Include.NON_NULL 的超集。

因此,在集合上使用 Include.NON_EMPTY 将起到以下作用:

@JsonInclude(Include.NON_EMPTY)
private Collection field;

或者您可以将其放在类上,以影响整个模型,例如:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Foo {
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接