使用 Jackson 从 json 中删除空值

use*_*078 3 java json jackson jersey-2.0

我正在尝试从 json 中删除所有空值。

{
   "key" : null
}
Run Code Online (Sandbox Code Playgroud)

我用过了:

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
Run Code Online (Sandbox Code Playgroud)

这里的“key”是一个列表,所以当我使用上面的序列化选项时,json 会转换为:

{
   "key" : []
}
Run Code Online (Sandbox Code Playgroud)

我希望 json 为:

{
}
Run Code Online (Sandbox Code Playgroud)

我不想使用

Include.NON_EMPTY
Run Code Online (Sandbox Code Playgroud)

因为我的项目中有其他 json,我需要显示空列表和 0 值键。当它是一个列表时,是否有任何方法可以删除空值键,就像处理字符串值一样?

我无法使用注释,因为类文件是使用 jaxb 从 xml 生成的。班级结构:

public class C1 {

protected List<C2> key;

public List<C2> getKey() {
    if (key == null) {
        key = new ArrayList<C2>();
    }
    return this.key;
}

}
Run Code Online (Sandbox Code Playgroud)

我已经被困了一段时间了。非常感谢任何帮助。提前致谢。

小智 6

要禁止使用null值序列化属性,

您可以ObjectMapper直接使用它进行配置。

mapper.setSerializationInclusion(Include.NON_NULL);
Run Code Online (Sandbox Code Playgroud)

  • 这就是我所做的。但对于列表值,它将 null 转换为 []。我想从 json 本身中删除该键。有没有办法做到这一点? (2认同)