杰克逊解析器到Java对象

时间:2015-03-24 07:53:00

标签: java json jackson

我正在使用Jackson来解析对象。有时我需要对象列表。

当我使用这样的工作时

 List<MyObject> mapper.readValue(file , new TypeReference<MyObject>() {})

但是当我使用它时它不起作用

public class JsonMocksRepository<T>{

    public  T getObject() throws Exception{

        return mapper.readValue(file ,new TypeReference<T>());
    }
}

我需要做什么? 基本上我想使用泛型来获得正确的类

1 个答案:

答案 0 :(得分:1)

这是因为类型擦除。没有关于T在运行时可用的实际类型的信息,因此TypeReference实际上只是TypeReference<Object>

如果您想要JsonMocksRepository的通用实例,则需要在施工时注入TypeReference

public class JsonMocksRepository<T>{
  private final TypeReference<T> typeRef;

  public JsonMocksRepository(TypeReference<T> typeRef) {
    this.typeRef = typeRef;
  }

  public T getObject() throws Exception{
    return mapper.readValue(file, typeRef);
  }
}