使用Jackson从JSON中移除空值

3

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

{
   "key" : null
}

我曾经使用过:

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);

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

{
   "key" : []
}

我希望JSON是这样的:
{
}

我不想使用。
Include.NON_EMPTY

由于我在项目中有其他需要显示空列表和0值键的json。是否有方法可以删除空值键,就像它对字符串值所做的那样?

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

public class C1 {

protected List<C2> key;

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

}

我已经卡住一段时间了。非常感谢您的帮助。提前致谢。


你尝试过在类上方使用注解吗?@user145078 - Vikrant Kashyap
在我们的生产环境中,我们使用JAXB将XML转换为POJO,因此我无法控制创建的Java文件并且不能使用注释@VikrantKashyap。 - user145078
那么你需要编写一个自定义的NullSerializer来避免在序列化对象中出现key。@User - Vikrant Kashyap
有没有文档或示例可以供我查看以实现这个?@VikrantKashyap - user145078
请发布您要序列化的class结构。@user145078,因为不清楚您要序列化什么..谢谢 - Vikrant Kashyap
我已经更新了问题的类结构。谢谢@VikrantKashyap - user145078
1个回答

6
为了避免序列化具有 null 值的属性,您可以直接配置 ObjectMapper
mapper.setSerializationInclusion(Include.NON_NULL);

2
我已经完成了这个任务。但是对于列表值,它将null转换为[]。我想从json本身中删除该键。有没有办法做到这一点? - user145078

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