【问题标题】:Remove null values from json using jackson使用jackson从json中删除空值
【发布时间】:2016-08-29 09:06:49
【问题描述】:

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

{
   "key" : null
}

我用过:

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

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

{
   "key" : []
}

我希望 json 是:

{
}

我不想使用

Include.NON_EMPTY

因为我的项目中有其他 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;
}

}

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

【问题讨论】:

  • 您是否尝试过在类上方使用注释。 @user145078
  • 在我们的生产环境中,我们使用 jaxb 将 xml 转换为 pojo,因此我无法控制创建的 java 文件,也无法使用注释 @VikrantKashyap
  • 那么您已经编写了一个自定义 NullSerializer 以避免在序列化对象中出现 key。 @用户
  • 是否有我可以查看的文档或示例来实现这一点? @VikrantKashyap
  • 能否请您发布您要序列化的class 结构。 @user145078 因为它不清楚你到底想序列化什么.. Thanxx

标签: java json jackson jersey-2.0


【解决方案1】:

要禁止序列化具有null 值的属性,

你可以直接使用这个配置ObjectMapper。

mapper.setSerializationInclusion(Include.NON_NULL);

【讨论】:

  • 这就是我所做的。但是对于列表值,它将 null 转换为 []。我想从 json 本身中删除该密钥。有没有办法做到这一点?
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2022-12-05
  • 2013-09-06
  • 2018-02-11
  • 1970-01-01
相关资源
最近更新 更多