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

    HTML定义了网页的内容 CSS定义了网页的布局 JavaScript定义了网页的行为

  2. 原生js表单序列化----- FormData

    <style type="text/css"> .progress{ height: 10px; width: 600px; border: 1px solid red ...

  3. 妙用Outlook2003群发商业邮件

    妙用Outlook2003群发商业邮件   我们知道,如果需要在Outlook 2003中向多个对象发送邮件,那么只需要在指定收件人时用分号输入多个邮件地址或者使用抄送方式即可:假如对象较多,可以使用 ...

  4. 开源自己写的图片转Ascii码图工具

    GitHub地址:https://github.com/qiangzi7723/img2Ascii 如果觉得不错可以给个star或者提出你的建议 img2Ascii,基于JS的图片转ASCII示意图. ...

  5. Android可更换布局的换肤方案

    换肤,顾名思义,就是对应用中的视觉元素进行更新,呈现新的显示效果.一般来说,换肤的时候只是更新UI上使用的资源,如颜色,图片,字体等等.本文介绍一种笔者自己使用的基于布局的Android换肤方案,不仅 ...

  6. vue基础01

    事件 事件绑定 在vue中,事件绑定用v-on.v-on也可以用@click=""形式 实例1: <div class="container" id=&q ...

  7. 谈谈final, finally, finalize的区别

    final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为fi ...

  8. [luogu P3128][USACO15DEC]Max Flow [LCA][树上差分]

    题目描述 Farmer John has installed a new system of  pipes to transport milk between the  stalls in his b ...

  9. 任务调度---crontab

    1.   crontab相当于windows下的任务与计划,可以设定定时任务,周期执行的任务 2.   设置任务调度文件 crontab  -e       进入任务界面,添加如下命令 0 2 * * ...

  10. ABP 重写主键ID

    [Column("你那表的源主键名")] public override leixing Id{ get; set; }