我有一个实现Map<String, Object>接口的类:

public class TypedObject implements Map<String, Object>, Serializable {...}
TypedObject的一个实例可能包含TypedObject的另一个实例作为值,依此类推。

默认情况下,Jackson的ObjectMapper将所有类似地图的记录反序列化为LinkedHashMap。我希望它反序列化任何子映射到TypedObject

我知道我可以实现自己的解串器,但是在我看来,有一种更简单的方法。

那么,如何通知ObjectMapper我想要什么?

示例:
{"child":{"name":"son","child":{"name":"grandson"}}}

应该反序列化为TypedObject,其中包含另一个TypedObject值,该值也包含TypedObject值。

最佳答案

一种方法是指定从抽象类型MapTypedObject的映射。这可以通过构造SimpleModule,调用其“addAbstractTypeMapping(...)”方法并向ObjectMapper注册模块来完成。

为此,TypedObject必须具有可用的零参数构造函数。

07-25 21:35