Fastjson 转换json 到带泛型的对象(如Map )报错解决
1 问题出现
在跑demo的时候,写了个读取,然后转换成HashMap的代码,结果发现fastjson报了类型转换异常:异常信息:
java.lang.ClassCastException: com.alibaba..JSONObject cannot be cast rror.ErrorDto Msg(ErrorCache.java:40) ~[classes/:na]
Result(ResultUtil.java:89) ~[classes/:na]
esult.ResultUtil.failure(ResultUtil.java:71) ~[classes/:na]
esult.ResultUtil.failure(ResultUtil.java:50) ~[classes/:na]因为fastjson转换对象,⽅法是JSON.parseObject(String json,Class clazz),这个⽅法⼜没办法指定我们需要转换的具体类型⽐如我们想要得到的结果是HashMap<String,ErrorDto>, 但是因为parseObject没有指定泛型,所以通过debug,可以看到json解析后,是⼀个HashMap<String,JsonObject>
json转换对象类型
2. 解决
fastjson除了上⾯的⽅法外,还重载了⼀个⽅法
就是这个TypeReference,修改后代码:private static HashMap <String ,ErrorDto > errorCodeCache ; static { String s = FileUtil .readResourceFile (ERROR_JSON_PATH ); HashMap hashMap = JSON .parseObject (s , HashMap .class ); errorCodeCache = hashMap ;}
1
2
3
4
5
6
7public static <T > T parseObject (String text , TypeReference <T > type , Feature ... features ){}
1 HashMap <String ,User > map = JSON .parseObject (s , new TypeReference <HashMap <String ,User >>(){}); 1
2
3
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论