我有一个非常简单的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());
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我获得以下输出:
Class of deser's nested object is LinkedHashMap
Run Code Online (Sandbox Code Playgroud)
但是我想将嵌套映射反序列化为输出TreeMap而不是LinkedHashMap输出.我如何告诉杰克逊TreeMap在反序列化时默认使用?
通过文档阅读我发现的最接近的事情是能够通过addAbstractTypeMapping()模块为抽象类型定义具体类,但我尝试了每个超类和实例LinkedHashMap尝试这样做,似乎没有任何工作.
这是使用Jackson 2.4.2,虽然如果有一种方法可以做到这一点,需要更高的版本,我将能够升级.