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

时间:2011-11-15 08:57:45

标签: 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
}

它警告我collectionType 已弃用。用什么而不是它?

1 个答案:

答案 0 :(得分:13)

TypeFactory本身不被弃用,只是静态方法;像“constructType”这样的实例方法可用。所以问题是你在哪里使用TypeFactory实例。

通常,您使用ObjectMapper方法从getTypeFactory获取实例;或来自SerializationConfig / DeserializationConfig。他们携带一个实例。 如果这些都不起作用,那么您可以使用TypeFactory.instance

弃用的原因是某些扩展模块需要替换标准工厂:具体来说,Scala模块需要使用Scala Collection(etc)类型扩展类型处理 - 这些在默认情况下不起作用,因为Scala不会扩展java.util版本。