Jackson @JsonUnwrapped创建空豆

时间:2015-07-30 23:19:39

标签: java json jackson

我有一套复杂的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?

1 个答案:

答案 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