折腾小半天的问题,这里先感谢一下深圳的小伙子,远程帮我搞,虽然也没有搞出来==========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());

  

FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)的更多相关文章

  1. 【Thymeleaf】Thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法

    解决方案 spring: thymeleaf: mode: LEGACYHTML5 <dependency> <groupId>net.sourceforge.nekohtml ...

  2. 关于使用jquery时,ie8下提示对象不支持的属性或方法的解决办法

    转自:http://wapapp.baidu.com/auoong/item/538790fcbe87c834d7ff8cde 首先这个问题的前提是已经排除了常见的这个问题.下面说一种今天我碰到的一种 ...

  3. 对象不支持“attachEvent”属性或方法的解决办法

    有些脚本在IE11下执行会报错误: 对象不支持“attachEvent”属性或方法 解决办法 解决办法:把attachEvent改为addEventListener即可

  4. [hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法

    问题描述: 在hadoop中处理多个文件,其中每个文件一个map. 我使用的方法为生成一个文件,文件中包含所有要压缩的文件在HDFS上的完整路径.每个map 任务获得一个路径名作为输入. 在eclip ...

  5. 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法

    今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下: 1 //获取Serv ...

  6. spyder在编辑过程中被自己弄乱了,想要恢复成安装时默认的格式或者重置页面格式的解决办法

    打开spyder,tools-->Reset Spyder to factory defaults,按照如上操作即可恢复成安装时的默认格式.

  7. 含有按钮的ScrollView在iOS8中无法滚动的解决办法 | ScrollView with UIControl/UIButton subviews not scrollable under iOS 8

    转自:http://zcw.me/blogwp/%E5%90%AB%E6%9C%89%E6%8C%89%E9%92%AE%E7%9A%84scrollview%E5%9C%A8ios8%E4%B8%A ...

  8. EF 一个实体对象不能由多个 IEntityChangeTracker 实例引用 解决办法

    在DAL层中,建立工厂类 namespace DAL { public static class SysDbContextFactory { /// <summary> /// 从Http ...

  9. ecshop transport.js IE报错(608行),对象不支持此属性或方法 的解决办法

    解决办法: 将if (this.hasOwnProperty(k)) { 改为: if (this.hasOwnProperty && this.hasOwnProperty(k)) ...

随机推荐

  1. 关于JAVA正则匹配空白字符的问题

    今天遇到一个字符串,怎么匹配空格都不成功!!! 我把空格复制到test.properties文件 显示“\u3000” ,这是什么? 这是全角空格!!! 查了一下    \s    不支持全角 1.& ...

  2. Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

    1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...

  3. JavaScript实现一个复数类

    <script type="text/javascript"> /** * 这里定义Complex类,用来描述复数 */ /** * 这个构造函数为它所创建的每个实例定 ...

  4. nopCommerce 3.9 大波浪系列 之 网页加载Widgets插件原理

    一.插件简介 插件用于扩展nopCommerce的功能.nopCommerce有几种类型的插件如:支付.税率.配送方式.小部件等(接口如下图),更多插件可以访问nopCommerce官网. 我们看下后 ...

  5. swift3.0 基础练习-实现99乘法表

    用的方法比较笨 大致效果是这样 思路: 第一行 拼接一次 第二行 拼接二次 ... 第九行 拼接九次 //num控制个数 var num = 1 //result为结果 var result = &q ...

  6. 初学者:浅谈web前端就业的学习路线

    初级前端 主要学习三个部分:HTML,CSS,JavaScript 一.html + css部分: 这部分特别简单,到网上搜资料,书籍视频非常多.css中盒子模型,流动,block,inline,层叠 ...

  7. iptables中DNAT的配置方法

    1.一对一流量完全DNAT 首先说一下网络环境,普通主机一台做防火墙用,网卡两块 eth0 192.168.0.1  内网 eth1 202.202.202.1 外网 内网中一台主机 192.168. ...

  8. vc++MFC开发上位机程序

    用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串 ...

  9. year:2017 month:07 day:31

    2017-07-31 JAVA se 1:基础 控制语句:continue语句:退出本次循环 break语句:退出当前循环 循环语句:for(初始化:条件表达式:循环体){循环语句} 先初始化,再执行 ...

  10. RabbitMQ入门-高效的Work模式

    扛不住的Hello World模式 上篇<RabbitMQ入门-从HelloWorld开始>介绍了RabbitMQ中最基本的Hello World模型.正如其名,Hello World模型 ...