Jackson 解析器到 Java 对象
Jackson Parser To Java Object
我正在使用 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>());
}
}
我需要做什么?
基本上我想使用泛型来获得正确的 class
这是因为类型擦除。在运行时没有关于 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);
}
}
我正在使用 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>());
}
}
我需要做什么? 基本上我想使用泛型来获得正确的 class
这是因为类型擦除。在运行时没有关于 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);
}
}