我有一个json字符串,应该将其反序列化为以下类class Data <T> { int found; Class<T> hits}我该怎么做?这是通常的方式mapper.readValue(jsonString, Data.class);但是我怎么提到T代表什么呢?
3 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
您需要为使用的TypeReference每种通用类型创建一个对象,并将其用于反序列化。例如,
mapper.readValue(jsonString, new TypeReference<Data<String>>() {});
繁花不似锦
TA贡献1851条经验 获得超4个赞
您不能这样做:您必须指定完全解析的类型,例如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);
}
添加回答
举报
0/150
提交
取消