FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
来源:互联网 发布:parallels 没有网络 编辑:程序博客网 时间:2024/06/03 11:34
折腾小半天的问题,这里先感谢一下深圳的小伙子,远程帮我搞,虽然也没有搞出来==========FUCK
声明:Android开发下发生此异常,Java开发下并不会有这个问题
异常重现
简单说一下抛出异常的代码:
(1)解析json代码如下:
RecommendBean<RecommendListBean> obj = JSON.parseObject(jsonString, new TypeReference<RecommendBean<RecommendListBean>>(){});RecommendListBean recommendListBean = (RecommendListBean) (obj.getData());
错误日志如下:
java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.test.RecommendListBean
(2)model 如下:
package com.test;/** * Created by Travis on 2017/8/20. */public class RecommendBean<T> { private int status; private String message; private T data; public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; }}
package com.test;import java.util.List;/** * Created by lenovo on 2017/8/20. */public class RecommendListBean { private int count; private List<RecommendListItemBean> list; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public List<RecommendListItemBean> getList() { return list; } public void setList(List<RecommendListItemBean> list) { this.list = list; }}
package com.test;import java.io.Serializable;/** * Created by Travis on 2017/8/20. */public class RecommendListItemBean implements Serializable { private static final long serialVersionUID = 21455356667888L; private int uid; private String nickname; private int sex; private int age; private String avatar; private String theme_pic; private String job; private String signature; private String sound; private int sound_length; private int fee; public RecommendBean getRecommend() { return recommend; } public void setRecommend(RecommendBean recommend) { this.recommend = recommend; } private RecommendBean recommend; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public String getTheme_pic() { return theme_pic; } public void setTheme_pic(String theme_pic) { this.theme_pic = theme_pic; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getSignature() { return signature; } public void setSignature(String signature) { this.signature = signature; } public static class RecommendBean<T> implements Serializable { private static final long serialVersionUID = 21455356667889L; private int id; private int user_id; private int type; private Object content; private int zan; private int status; private String create_time; private String update_time; private int zanTotal; private int commentTotal; private T picture; private T video; public int getType() { return type; } public void setType(int type) { this.type = type; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getUser_id() { return user_id; } public void setUser_id(int user_id) { this.user_id = user_id; } public Object getContent() { return content; } public void setContent(Object content) { this.content = content; } public int getZan() { return zan; } public void setZan(int zan) { this.zan = zan; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getCreate_time() { return create_time; } public void setCreate_time(String create_time) { this.create_time = create_time; } public String getUpdate_time() { return update_time; } public void setUpdate_time(String update_time) { this.update_time = update_time; } public int getZanTotal() { return zanTotal; } public void setZanTotal(int zanTotal) { this.zanTotal = zanTotal; } public int getCommentTotal() { return commentTotal; } public void setCommentTotal(int commentTotal) { this.commentTotal = commentTotal; } public T getPicture() { return picture; } public void setPicture(T picture) { this.picture = picture; } public T getVideo() { return video; } public void setVideo(T video) { this.video = video; } }}
原因分析:
经过debug发现此处泛型所在的地方,仍然还是JSONObject,而没有解析成对应的对象,仅仅只是将obj解析成需要的实体对象了。
即使此处使用强转,仍然会有报错信息:cannot be cast to com.test.RecommendListBean
解决办法: 换用GSON来解析,具体方法如下
Gson gson = new Gson(); RecommendBean<RecommendListBean> obj = gson.fromJson(jsonString, new TypeToken<RecommendBean<RecommendListBean>>(){}.getType()); RecommendListBean recommendListBean = (RecommendListBean) (obj.getData());
阅读全文
0 0
- FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
- GSON解析转化成含有泛型的对象
- fastjson 嵌套对象,泛型的再次处理
- Alibaba FastJson支持对象中私有属性的json解析
- 杂记--泛型与json解析(fastjson)
- 利用 fastjson.jar 把对象解析成Json 数据
- android json解析对象
- Android FastJson,json解析
- 将对象解析成json字符串
- 将json格式的字符串解析成Map对象
- fastJson 解析对象与解析对象List
- fastjson解析嵌套泛型
- json对象的解析,jquery 解析json
- android json解析(fastjson,Gson等)
- Android json解析(FastJson Gson 对比)
- GSON解析json含有不确定的泛型实体类,根据键值获取json数据
- Android 解析服务器JSON对象
- Android 中json 对象解析
- RSA host key has changed 错误
- Python基础教程第三章——使用字符串
- CF 429B B.Working out 四个角递推
- 码云--当中私密项目成员如何提交代码
- HDU 6155 Subsequence Count [线段树维护矩阵]
- FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
- 【C语言】可变参数列表
- 省市、银行支行地址信息
- [第七季]12.遍历元素的后代和同胞
- FAL[server, ARC2]: FAL archival, error 16099 closing archivelog file 'primary'
- JEESZ分布式框架开发环境部署
- Neo4j CQL
- const使用详解
- c++常用知识点4