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

    JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...

  2. SpringEL 表达式错误记录

    原因暂时未知....

  3. [CF697D]Puzzles 树形dp/期望dp

    Problem Puzzles 题目大意 给一棵树,dfs时随机等概率选择走子树,求期望时间戳. Solution 一个非常简单的树形dp?期望dp.推导出来转移式就非常简单了. 在经过分析以后,我们 ...

  4. 面向对象JavaScript的基本概念

    一.类和对象 1, JavaScript对象分为三类:本地对象,内置对象,宿主对象. 本地对象有15种:Object Function Array String Number Boolean Date ...

  5. static关键字,引发的spring普通类获取spring的bean的思考

    在c++和java中static关键字用于修饰静态成员变量和成员函数 举例一个普通的javabean class AA { int a; static int b; geta/seta;//此处省略g ...

  6. Certificates does not conform to algorithm constraints

    今天在开发时遇到一个新问题:Certificates does not conform to algorithm constraints,在此记录一下解决方案. 问题详情: [ERROR] Faile ...

  7. Android源码博文集锦4

    Android精选源码 一款常见的自定义加载动画 android开源记账项目CoCoin Android自定义view:拖拽选择按钮 Android指纹识别 一个折线图,它提供了几个非常实用的功能 一 ...

  8. 【nodejs】nodejs 的linux安装(转)

    (一) 编译好的文件 简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文件的中执行命令行一点问题都没有,不过不是全局的,所以将这个设置为全局就好了. ./node -v ...

  9. net 将手机号码中间的数字替换成星号

    Regex.Replace(link.user_tel, "(\\d{3})(\\d{5})(\\d{3})", "$1*****$3")

  10. jsp元素

    1.指令元素:用于在JSP转换为Servlet阶段提供JSP页面的相关信息,如页面采用的字符编码集.页面中需要导入的类等信息,指令元素不会产生任何的输出到当前JSP的输出流中 指令元素有三种指令:pa ...