json字符串转换成对象的问题

fqq_zhang 2013-06-25 11:07:08
public class JSONUtil<T>{
private String jsonstring;
public JSONUtil(String jsonstring){
this.jsonstring=jsonstring;
}
public LinkedList<T> parseJsonToTs(){
Type type=new TypeToken<LinkedList<T>>() {}.getType();
Gson gson=new Gson();
LinkedList<T> list=gson.fromJson(jsonstring, type);
return list;
}
}

调用时
JSONUtil<PersonBean> jsonUtil=new JSONUtil<PersonBean>(json);
List<PersonBean> retList1 = jsonUtil.parseJsonToTs();
在第二句提示:
com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@41019c08 failed to deserialized json object [{"id":"01","name":"张三"},{"id":"02","name":"李四"}] given the type java.util.LinkedList<T>

请问?
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wasdasdfqwer 2013-06-26
  • 打赏
  • 举报
回复
引用 1 楼 wufengui1315 的回复:
马上有效果的做法,但是你的泛型就没什么意义了,可能是底层的原因。

public List<T> parseJsonToTs(){  
       // Type type=new TypeToken<LinkedList<T>>() {}.getType();  
        Gson gson=new Gson();  
        List<T> list=gson.fromJson(jsonstring, new TypeToken<List<Person>>(){}.getType()); // 
        return list;  
   }

//new TypeToken<List<Person>>(){}.getType()中的T改成Person.
否则也会报类型转换异常,我的是Object不能被转化为Person
如果用泛型的话T会被认为是Object不能转换
wasdasdfqwer 2013-06-26
  • 打赏
  • 举报
回复
马上有效果的做法,但是你的泛型就没什么意义了,可能是底层的原因。

public List<T> parseJsonToTs(){  
       // Type type=new TypeToken<LinkedList<T>>() {}.getType();  
        Gson gson=new Gson();  
        List<T> list=gson.fromJson(jsonstring, new TypeToken<List<Person>>(){}.getType()); // 
        return list;  
   }

//new TypeToken<List<Person>>(){}.getType()中的T改成Person.
否则也会报类型转换异常,我的是Object不能被转化为Person

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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