fastjson反序列化成泛型对象失败,不支持吗?

济南大飞哥 2018-07-17 12:23:34

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class SS
{
public static void main(String[] args)
{
SS s = new SS();

Book book = s.StrToObject();

System.out.println(book.toString());
}

public <T> T StrToObject()
{
Book book = new Book();

book.setName("java");
book.setAuthor("Tom");
book.setAuthor("100");

String str = JSON.toJSONString(book);

T t = JSON.parseObject(str, new TypeReference<T>()
{
});

Book newbook = JSON.parseObject(str, Book.class);

System.out.println(newbook.toString()); // 这样是可以的

return t;
}
}

class Book
{
private String name;

private String author;

private int price;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public String getAuthor()
{
return author;
}

public void setAuthor(String author)
{
this.author = author;
}

public int getPrice()
{
return price;
}

public void setPrice(int price)
{
this.price = price;
}

@Override
public String toString()
{
return "Book [name=" + name + ", author=" + author + ", price=" + price + "]";
}
}


代码编译不会报错,运行时报

Book [name=java, author=100, price=0]
Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to Book
at SS.main(SS.java:10)


很明显类型转换失败,问题时方法是泛型方法,编译也过了。
...全文
291 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
济南大飞哥 2018-07-17
  • 打赏
  • 举报
回复
已经自行解决,原来需要打开autotype,但是据说有安全漏洞。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧