此问题在此处已有答案:
Excluding NullNode when serializing a Jackson JSON tree model(3个答案)
8个月前关门了。
ObjectMapper仍然包含空值。我尝试了很多解决方案,但是没有任何效果。我不能使用json注解,所以我唯一的解决方案是预定义的Map器设置,但是这没有反映出来。我认为这是由于objectMapper的缓存。但是我对Map器的唯一修改是在构造函数中进行的。所以缓存不会是一个问题
相关性:
Log4J2: 2.17.1
Fasterxml Jackson annotation: 2.13.2
Fasterxml Jackson databind: 2.13.2
Wildfly: 20.0.1
OpenJDK: 11.0.14.1
我有一个objectMapper定义为全局值,它在构造函数中被示例化。然后我有一个方法来构建一个JSON,它接受键和值。因为值可以是任何东西。
private final ObjectMapper jsonMapper;
public SomeConstructor() {
this.jsonMapper = new ObjectMapper();
this.jsonMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
this.jsonMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
}
@Override
public void setJsonVar(String jsonVar, String jsonKey, Object values) {
// loads ObjectNode from memory if exists
ObjectNode jsonNode = getJsonVar(jsonVar);
// lazy init if ObjectNode not exists
if (jsonNode == null) {
jsonNode = jsonMapper.createObjectNode();
}
// add object
jsonNode.putPOJO(jsonKey, values);
}
用法:
setJsonVar("var-A", "key-A", 1);
setJsonVar("var-A", "key-B", null);
print("var-a");
期望值:
我想避免JSON中的空值。
预期值:var-A: { "key-A":1 }
,获得值:var-A: { "key-A":1, "key-B":null }
个
为什么会发生这种情况?我可以做些什么来解决这个问题?
1条答案
按热度按时间xoefb8l81#
这个选项在序列化对象、自定义对象或
Map
时适用,但在处理json树时**不 * a适用。请考虑这个Foo
类:排除空值的选项将按预期方式使用它。
主要方法来说明它: