【发布时间】:2015-02-06 21:25:35
【问题描述】:
我有一个非常简单的 Jackson 代码来反序列化嵌套的 JSON 对象:
public class MapTest
{
public static void main(String ... args) throws Exception
{
final String ser = "{\"nested\":{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\"}}";
final Map<String, Object> deser = new ObjectMapper().readValue(ser, new TypeReference<TreeMap<String, Object>>(){});
System.out.println("Class of deser's nested object is " + deser.get("nested").getClass().getSimpleName());
}
}
当我运行它时,我得到以下输出:
Class of deser's nested object is LinkedHashMap
但是,我希望根据输出将嵌套映射反序列化为 TreeMap 而不是 LinkedHashMap。如何告诉 Jackson 在反序列化时默认使用 TreeMap?
通读文档,我发现最接近的事情是能够通过模块中的addAbstractTypeMapping() 为抽象类型定义具体类,但我已经尝试了LinkedHashMap 的每个超类和实例,试图做到这一点,但什么也没做似乎有效。
这是使用 Jackson 2.4.2,但如果有办法做到这一点,需要更高版本,我可以升级。
【问题讨论】: