我目前正在使用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
}
}