Jackson TypeFactory静态方法已弃用使用什么?

kam*_*aci 8 java jackson

杰克逊的Typefactory类里面有很多不赞成使用的方法.我这样使用它:

public List<T> getX(Class<T> clz) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        String jsonData = mapper.writeValueAsString(data);
        a = mapper.readValue(jsonData, TypeFactory.collectionType(List.class, clz));
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    return a;// a is a global variable
}
Run Code Online (Sandbox Code Playgroud)

它警告我,collectionType弃用.用什么而不是它?

Sta*_*Man 13

TypeFactory本身不被弃用,只是静态方法; 像"constructType"这样的实例方法可用.所以问题是你在哪里获得一个TypeFactory实例.

大多数情况下,您ObjectMapper使用其getTypeFactory方法获得实例; 或来自SerializationConfig/ DeserializationConfig.他们携带一个实例.如果这些都不起作用,那么TypeFactory.instance您也可以使用.

之所以弃用是,一些扩展模块将要替换的标准厂房:具体来说,斯卡拉模块需要使用Scala收费(ETC)类型扩展式处理 - 这些都将默认情况下不工作,因为Scala没有扩展的java.util版本.

  • collectionType()是静态方法; 使用`constructCollectionType`代替. (4认同)