如何从Jackson ObjectMapper中排除空对象?

时间:2014-11-20 19:13:30

标签: java json serialization jackson

基本上我不希望任何空的JSON数组或对象显示在我生成的JSON文件中。我已经使用以下方法相应地配置了我的ObjectMapper:

objectMapper.setSerializationInclusion(Include.NON_EMPTY);

这适用于数组,集合和字符串。 但是,如果我有一个空对象(=所有属性为null或为空),它仍将显示在生成的JSON中,如下所示:

"MyObject":{}

这是我对空对象的一个​​可能的例子:

class MyClass
{
    String property1 = "";
    Object property2 = null;
}

在这种情况下,我希望从生成的JSON文件中完全排除该对象。

这可能吗?如果是,我如何配置我的ObjectMapper以获得所需的行为?

2 个答案:

答案 0 :(得分:0)

要忽略空值,例如您可能已经初始化了arrayList,但是该列表中没有元素。那时使用NOT_EMPTY批注忽略那些空值字段

@JsonInclude(Include.NON_EMPTY)
class Foo
{
  String bar;
}

答案 1 :(得分:-2)

问题问题已经过了几年,但我点击这个页面寻找解决方案。所以就是这样。

您需要使用NON_DEFAULT注释您的课程:

@JsonInclude(NON_DEFAULT)
class MyClass
{
  String property1 = "";
  Object property2 = null;
}

全局配置不足如文档中明确说明的那样: http://fasterxml.github.io/jackson-annotations/javadoc/2.7/com/fasterxml/jackson/annotation/JsonInclude.Include.html#NON_DEFAULT

新的NON_DEFAULT自2.7以来可用。

相关问题