解决Fastjson在PlayFramework下面出现JSONObject can not cast t
发布时间:2020-12-16 19:43:57 所属栏目:百科 来源:网络整理
导读:环境 Fastjson 1.2.34 Play 1.4.4 背景 有个需求,需要在JavaBean里面嵌入一个ListBean,包含泛型。但在转换之后,调用List的数据就开始抛异常了。下面是Bean的示例代码: public class Bean1 { public String name; public ListBean2 beanList;} public cla
环境
背景有个需求,需要在JavaBean里面嵌入一个List<Bean>,包含泛型。但在转换之后,调用List的数据就开始抛异常了。下面是Bean的示例代码: public class Bean1 { public String name; public List<Bean2> beanList; } public class Bean2 { public Integer id; } 相对应的json数据 [ { "name": "hello","beanList": [ { "id": 1,updateTime: null},{ "id": 2,updateTime: null} ] },{ "name": "hello2","beanList": [ { "id": 3,{ "id": 4,updateTime: null} ] } ] 产生问题的原因play框架引入了javassist工具,用来产生字节码增强,但是在生成代码的时候丢失了泛型,使得beanList从 出错代码: 解决办法public class Bean1 { public String name; public List<Bean2> beanList; //添加setter public void setBeanList(List<Bean2> beanList){ this.beanList = beanList; } } 虽然javassist在增强代码的时候会丢失字段的泛型,但是不会丢失函数参数的泛型,所以利用这点可以让fastjson找回泛型类型。 总结在playframework以及一些拥有代码增强的框架里面,需要特别注意fastjson等这些依赖泛型反射的框架。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |