背景:我尝试使用泛型来简化项目中的解析Json,项目中的总返回值类为 ResultMsgBean,他的字段resultInfo是每次接口具体的值。可能为list,可能为pojo。我尝试采用了TypeReference来解决这个问题。
问题:出现了外部Json解析成功,但是解析的实体类在使用中,就会出现JSONObject to javabean的异常.
虽然是整体全部使用TypeReference,但是网上说会有缓存类型的问题,所以使用的是json字符来本地测试,只有一次转换.
在测试过程中发现,当我手动明确指定类型的时候就不会有问题,使用泛型,则TypeReference.getType()没有获取到具体的类型,导致转换失败,实体类内部成为一个JSONObject,没有变成javaBean.希望能够得到帮助~
7条答案
按热度按时间lf5gs5x21#
https://github.com/alibaba/fastjson/wiki/TypeReference
看这个文档是否对你有帮助哈
wj8zmpe12#
@wenshao 额,首先这个代码有点问题,是通不过编译的,
我根据下面的例子,可能上面代码的意思是加一个">"到 “T>”后面,但是,需要class为参数的方法,实在是找不到 ~~,我这边的源码是这样的
例子中自定义的Response没有Class参数,TypeReference也无法接收Class参数....
k10s72fa3#
@wenshao Android版源码和javaWeb版不一样啊,这个TypeReference Android版不支持泛型转换???? 为什么文档说1.1.49就可以了
这个是1.2.9的源码,上面的是1.1.54的源码
chhkpiq44#
而且在泛型是List的情况下,应该是如何使用class来传导呢。
qlckcl4x5#
目前android版本的TypeReference不支持传入参数,我尽快补上并发布新版哈
km0tfn4u6#
@wenshao 我在使用最新版的1.55的时候,发现没有支持传入参数. 我苦等好久~
iklwldmw7#
@wenshao 请问android版本的TypeReference 入参什么时候能补上呢。