fastJson泛型如何转换
2016-11-29 23:29
387 查看
引子
现在负责的业务和json打交道比较多,最近使用fastJson框架json串转成泛型对象遇到了一个异常:java.lang.ClassCastException
还原下场景:
模型Result<T>
publicclassResult<T>{ privateStringmsg; privateList<T>module; publicStringgetMsg(){ returnmsg; } publicvoidsetMsg(Stringmsg){ this.msg=msg; } publicList<T>getModule(){ returnmodule; } publicvoidsetModule(List<T>module){ this.module=module; } }
为什么要使用泛型,可以理解泛型可以接受任意类型,有些代码是公用的,如结果集,不可能为每个具体结果定义一个模型,比如Result<User>、Result<Item>等。
publicclassUser{ privateLonguser_id; privateStringuser_name; publicUser(){ } publicUser(LonguserId,Stringname){ this.user_id=userId; this.user_name=name; } publicLonggetUser_id(){ returnuser_id; } publicvoidsetUser_id(Longuser_id){ this.user_id=user_id; } publicStringgetUser_name(){ returnuser_name; } publicvoidsetUser_name(Stringuser_name){ this.user_name=user_name; } }
下面直接看下泛型的转换
publicstaticvoidmain(String[]args){ Result<User>r=newResult<User>(); r.setMsg("msg"); List<User>users=newArrayList<>(); users.add(newUser(1L,"hehe")); users.add(newUser(2L,"haha")); r.setModule(users); Stringjs=JSON.toJSONString(r); System.out.println(js); Result<User>obj=(Result<User>)JSON.parseObject(js,Result.class); Useruser=obj.getModule().get(0); System.out.println(user); }
p.p1{margin:0.0px0.0px0.0px0.0px;font:14.0pxMonaco}
p.p2{margin:0.0px0.0px0.0px0.0px;font:14.0pxMonaco;color:#ff2600}
span.s1{text-decoration:underline;color:#0433ff}
span.Apple-tab-span{white-space:pre}
结果:
{"module":[{"user_id":1,"user_name":"hehe"},{"user_id":2,"user_name":"haha"}],"msg":"msg"}
Exceptioninthread"main"java.lang.ClassCastException:com.alibaba.fastjson.JSONObjectcannotbecasttocom.yuanmeng.json.User
atcom.yuanmeng.json.fanxing.Client.main(Client.java:32)
采用fastjson框架的TypeReference即可将json串转成定义好的泛型对象
Result<User>obj=(Result<User>)JSON.parseObject(js,newTypeReference<Result<User>>(){});
p.p1{margin:0.0px0.0px0.0px0.0px;font:14.0pxMonaco;color:#0433ff}
span.s1{text-decoration:underline}
span.s2{color:#ff2600}
相关文章推荐
- fastJson泛型如何转换
- fastJson泛型如何转换
- java fastjson如何自定义转换含枚举类型对象(编程技巧)
- 如何利用fastjson将JSON格式的字符串转换为Map,再返回至前端成为js对象
- FastJSON 转换List<T> ,Map<T,T>泛型失败 处理方法
- FastJson 泛型转换踩坑
- 如何利用fastjson将JSONArray转换成List<?>?
- Jackson如何实现json字符串和泛型List集合之间的转换
- java fastjson如何自定义转换含枚举类型对象(编程技巧)
- js中如何将字符串转换成json类型
- Json数据转换为泛型集合(或实体)
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- 如何把store里的所有数据转换成JSON传给后台
- 如何将对象转换成json格式,如何将json格式数据转换成js对象
- 如何将XML与O“.NET研究”BJECT进行相互转换(泛型以及通用方法)
- fastJson在java后台转换json格式数据探究(一)
- C#将泛型转换成JSON字符串
- java类的泛型集合转换成json对象
- jQuery、Ajax,DataTable数据如何转换成Json格式
- 将IList<T>泛型转换成Json