Jackson - 使用泛型类反序列化
我有一个json字符串,我应该将其反序列化为以下类
class Data <T> {
int found;
Class<T> hits
}
我该怎么做?这是通常的方式
mapper.readValue(jsonString, Data.class);
但是我如何提到T代表什么呢?
我有一个json字符串,我应该将其反序列化为以下类
class Data <T> {
int found;
Class<T> hits
}
我该怎么做?这是通常的方式
mapper.readValue(jsonString, Data.class);
但是我如何提到T代表什么呢?
您需要为使用的每个泛型类型创建一个对象,并将其用于反序列化。例如-TypeReference
mapper.readValue(jsonString, new TypeReference<Data<String>>() {});
您不能这样做:您必须指定完全解析的类型,例如 . 只是一个变量,也是毫无意义的。Data<MyType>
T
但是,如果你的意思是这将是已知的,只是不是静态的,你需要创建动态的等价物。引用的其他问题可能已经提到了这一点,但它应该看起来像这样:T
TypeReference
public Data<T> read(InputStream json, Class<T> contentClass) {
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, contentClass);
return mapper.readValue(json, type);
}