我在上POJO课,
class Test {
@JsonInclude(JsonInclude.Include.NON_EMPTY)
Mgmt mgmt;
}
class Mgmt {
@JsonInclude(JsonInclude.Include.NON_EMPTY)
List<String> values;
}
在测试序列化期间,“管理”字段将作为管理:尽管使用了“NON_EMPTY”包含条件,{}仍被写出。我希望避免字段管理:{},如果管理类-〉值具有空列表。
1条答案
按热度按时间7eumitmz1#
这是因为
JsonInclude.Include.NON_EMPTY
的默认实现只理解标准数据类型(集合、字符串...)的“空”,而不理解像Mgmt
这样的自定义数据类型。因为这是你的类,所以只有你知道“空”(或“空”)的意思,在你的特定情况下,空是由它的一个属性(
List<String> values
)本身为空的事实给出的。要实现这一点,您可以为
Mgmt
空定义一个自定义过滤器(这是一个简单的类,您可以在其中重写equals
方法,使其在每次您希望从序列化Json中过滤出该示例时返回true
:...然后将此类与自定义include一起使用: