我有一套复杂的pojos和mixins。
每当我使用@JsonUnwrapped
注释时,即使所有子值都为null,仍会创建反序列化的bean。我将对象映射器设置为不包含空字段。
protected static ObjectMapper writer = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY).
disable(SerializationFeature.WRITE_NULL_MAP_VALUES).disable(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS);
这允许我跳过空字符串或空元素但不是空的pojos(具体地说,所有用@JsonUnwrapped
注释的poj被序列化为{})。我的反序列化器使用Mixin注释与@JsonUnwrapped
,但我的作者没有。
所以我最终得到了很多空结构:
details: {
hoaFee: { },
parking: { },
pets: { },
utilities: {
landlordpays: { }
}
}
如何覆盖@JsonUnwrapped
使用的反序列化程序,以便不创建null pojo对象,或者,如何不序列化空pojos?
答案 0 :(得分:0)
JsonNode jsonNode = mapper.valueToTree(pojo);
Iterator<JsonNode> itr = jsonNode.iterator();
while (itr.hasNext()) {
JsonNode personNode = itr.next();
if (personNode instanceof ObjectNode) {
if (personNode.size() == 0) {
itr.remove();
}
}
}
System.out.println(jsonNode.toString());
您这样做是为了删除空 POJO 。