我有一个实现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
值。 最佳答案
一种方法是指定从抽象类型Map
到TypedObject
的映射。这可以通过构造SimpleModule
,调用其“addAbstractTypeMapping(...)”方法并向ObjectMapper
注册模块来完成。
为此,TypedObject
必须具有可用的零参数构造函数。