杰克逊自定义Map ValueInstantiator

时间:2011-11-18 08:43:43

标签: jackson

默认情况下,杰塞逊在反序列化任何java.util.LinkedHashMap类型时会创建Map个实例。如何定制以使Jackson创建不同的Map实现,但仍继续使用其默认的Map反序列化器?

1 个答案:

答案 0 :(得分:4)

有多种方法可以做到这一点,但最简单的方法可能只是指定应该使用哪个类作为抽象类的具体实现。如下所示:

SimpleModule myModule = new SimpleModule(...);
myModule.addAbstractTypeMapping(Map.class, SomeOtherMap.class);
objectMapper.registerModule(myModule);

这适用于默认常见抽象类型(ListCollectionMap)以及指定自定义接口和抽象类的具体实现。