为了账号安全,请及时绑定邮箱和手机立即绑定

杰克逊-使用泛型类反序列化

杰克逊-使用泛型类反序列化

凤凰求蛊 2019-09-21 15:30:19
我有一个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>>() {});


查看完整回答
反对 回复 2019-09-21
?
繁花不似锦

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);

}


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信