使用Jackson以属性

时间:2016-11-28 17:38:52

标签: serialization hashmap jackson deserialization

我目前正在使用Guava的ForwardingMap作为基类,并且有许多类型可以扩展它。我需要维护Map类型,因为在消费者中需要对实例进行处理。因此,即使在内部使用合成的ForwardingMap,外部接口仍然必须是地图。

作为一个地图,使用@JsonAnyGetter和@JsonAnySetter反序列化键值属性工作正常但是,我还需要使用@JsonProperty来考虑自定义属性,它也可能是实例的一部分。

因此,在序列化或反序列化时,我想要所有条目和任何可能属于扩展类的自定义属性。

我已经研究了许多类型的解决方案,例如使用Shape.OBJECT和应用接口,但它们似乎都不适合我。我相信我需要创建一个自定义反序列化器/序列化器来处理Jackson中的bean + map处理,但是找不到任何关于如何执行此操作的示例。

这些链接有助于解释我想要做的事,没有运气:

理想情况下,我想要一个示例或指针,说明如何序列化和反序列化使用@JsonAnySetter和@JsonAnyGetter扩展ForwardingMap的实例,并使用@JsonProperty自定义属性。

我希望我的输出看起来像

    "modules": {
        "MyModel": { <-- extends ForwardingMap<>
            "domain": "typeinfo",
            "property":"hello",    <-- comes from @JsonProperty
            "another": "GoodBye",  <-- comes from @JsonAnyGetter
            "another2": 50  <-- comes from @JsonAnyGetter
        }
    }

0 个答案:

没有答案