7
Fastjson版本:1.2.47 异常:com.alibaba.fastjson.JSONObject cannot be cast to XXXXX 简述: JSON字符串反序列化Java对象时,抛出无法类型转换,对象嵌套List泛型。 发生异常的代码如下: Channel.java
package test.model;
import java.util.List;
/**
* 栏目
*/
public class Channel<T> {
/**
* 栏目ID
*/
private String channelId;
/**
* 栏目名
*/
private String channelName;
/**
* 该栏目下内容集合
*/
private List<T> contents;
public String getChannelId() {
return channelId;
}
public void setChannelId(String channelId) {
this.channelId = channelId;
}
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
public List<T> getContents() {
return contents;
}
public void setContents(List<T> contents) {
this.contents = contents;
}
}
Article.java
package test.model;
/**
* 文章
*/
public class Article {
/**
* 文章ID
*/
private String articleId;
/**
* 文章名
*/
private String articleName;
public String getArticleId() {
return articleId;
}
public void setArticleId(String articleId) {
this.articleId = articleId;
}
public String getArticleName() {
return articleName;
}
public void setArticleName(String articleName) {
this.articleName = articleName;
}
}
Test.java
package test;
import java.util.List;
import test.model.Article;
import test.model.Channel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
public class Test {
/**
* 测试JSON字符串反序列化时发生的类型转换异常
*/
public <T> List<T> jsonToObject(String json,Class<T> contentClazzType){
Channel<T> channel = JSON.parseObject(json, new TypeReference<Channel<T>>(){});
return channel.getContents();
}
public static void main(String[] args) {
String json = "{\"channelId\":\"1\",\"channelName\":\"新闻 \",\"contents\":[{\"articleId\":\"11\",\"articleName\":\"111\"},{\"articleId\":\"22\",\"articleName\":\"222\"}]}";
Test test = new Test();
List<Article> articleList = test.jsonToObject(json, Article.class);
for(Article article :articleList){
System.out.println("ArticleId=>"+article.getArticleId());
System.out.println("ArticleName=>"+article.getArticleName());
}
}
}
运行Test.java抛出com.alibaba.fastjson.JSONObject cannot be cast to XXXXX
这个问题该怎么办?