fastJson泛型如何转换的实现
引子
现在负责的业务和json打交道比较多,最近使用fastJson框架json串转成泛型对象遇到了一个异常:java.lang.ClassCastException
还原下场景:
模型Result
publicclassResult{ privateStringmsg; privateList module; publicStringgetMsg(){ returnmsg; } publicvoidsetMsg(Stringmsg){ this.msg=msg; } publicList getModule(){ returnmodule; } publicvoidsetModule(List module){ this.module=module; } }
为什么要使用泛型,可以理解泛型可以接受任意类型,有些代码是公用的,如结果集,不可能为每个具体结果定义一个模型,比如Result
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){
Resultr=newResult();
r.setMsg("msg");
Listusers=newArrayList<>();
users.add(newUser(1L,"hehe"));
users.add(newUser(2L,"haha"));
r.setModule(users);
Stringjs=JSON.toJSONString(r);
System.out.println(js);
Resultobj=(Result)JSON.parseObject(js,Result.class);
Useruser=obj.getModule().get(0);
System.out.println(user);
}
结果:
{"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串转成定义好的泛型对象
Resultobj=(Result )JSON.parseObject(js,newTypeReference >(){});
到此这篇关于fastJson泛型如何转换的实现的文章就介绍到这了,更多相关fastJson泛型转换内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。