日期:2014-05-18  浏览次数:20777 次

json字符串转换成对象的问题
本帖最后由 fqq_zhang 于 2013-06-25 11:50:03 编辑
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>

请问?
反射 泛型

------解决方案--------------------
马上有效果的做法,但是你的泛型就没什么意义了,可能是底层的原因。

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