2016-05-04 41 views
0

我想从我的json中删除所有的空值。使用jackson从json中删除空值

{ 
    "key" : null 
} 

我用:

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

这里的 “钥匙” 是列表,所以当我用上面的序列化选项,JSON被转换为:

{ 
    "key" : [] 
} 

我想json为:

{ 
} 

我d不想使用

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; 
} 

} 

我一直坚持了一会儿。任何帮助,高度赞赏。提前致谢。

+0

你有没有尝试过使用类之上的注释。 @ user145078 –

+0

在我们的生产环境中,我们使用jaxb将xml转换为pojo,所以我没有任何对创建的java文件的控制权,并且不能使用注释@VikrantKashyap – user145078

+0

,那么您已经编写了一个自定义的NullSerializer以避免那个'key'序列化对象。 @User –

回答

4

要与null值抑制序列化的属性,

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

mapper.setSerializationInclusion(Include.NON_NULL); 
+0

这就是我所做的。但是对于列表值,它将null转换为[]。我想从json本身删除该密钥。有没有办法做到这一点? – user145078