相关疑难解决方法(0)

如何更改杰克逊的默认具体地图类型?

我有一个非常简单的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,虽然如果有一种方法可以做到这一点,需要更高的版本,我将能够升级.

java jackson

5
推荐指数
1
解决办法
1393
查看次数

标签 统计

jackson ×1

java ×1