我在库中使用spring RestTemplate。输入接受ParameterizedTypeRecerence
并将其传递给其余模板以进行转换的库方法。
由于无关的原因,我需要将响应体作为byte []并使用Jackson手动转换为json。
杰克逊希望TypeReference
班级进行转换。
我正在寻找将这些转换为类的方法。
答案 0 :(得分:1)
可以使用助手类
public class CustomTypeReference extends TypeReference<Object>{
private final Type type;
public CustomTypeReference(ParameterizedTypeReference pt){
this.type = pt.getType();
}
@Override
public Type getType() {
return type;
}
}
并像这样使用它:
ParameterizedTypeReference<List<String>> typeRef
= new ParameterizedTypeReference<List<String>>() {};
TypeReference tr = new CustomTypeReference(typeRef);
ObjectMapper mapper = new ObjectMapper();
String jsonStr = "[\"key\", \"someStr\"]";
List<String> data = mapper.readValue(jsonStr, tr);
或者只是匿名TypeReference<Object>
ParameterizedTypeReference<List<String>> typeRef
= new ParameterizedTypeReference<List<String>>() {};
TypeReference tr = new TypeReference<Object>(){
public Type getType() {
return typeRef.getType();
}
};