Gson反序列化返回null

时间:2012-03-18 03:01:58

标签: json gson

我在将Android中的JSON字符串转换为对象时遇到问题。以下是JSON结构和Java类:

JSON:

{
"code":"SUCCEED",
"message":"",
"result":{
    "ccahUserId": 111,
    "ccahUserName":"your_name",
    "userFirstName":"your_first_name",
    "userLastName":"your_last_name",

    //others
}

Java类:

public class Result<T>{
   public String code;
   public String message;
   public T result;   
}

public class DeviceSetting 
{
    public long ccahUserId;
    public String ccahUserName;
    public String userFirstName;
    public String userLastName;
    //other members

}

的活动:

Gson gson = new Gson();
Result<DeviceSetting> setting = gson.fromJson(result, Result<DeviceSetting>.class);

当我反序列化JSON字符串时,代码和消息字段很好,但结果字段为空。 我还不熟悉Gson,所以请帮助解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:6)

可能result字段为null,因为它依赖于Result的类型参数。

来自Gson.fromJson(JsonElement, Class<T>)的{​​{1}}(我是一个粗体):

  

此方法从指定的分析树反序列化Json读取   到指定类型的对象。 如果不适合使用   指定的类是泛型类型 ,因为它不具有泛型   由于Java的Type Erasure特性而输入类型信息。因此,如果所需类型是泛型类型,则不应使用此方法。请注意,如果指定对象的任何字段是泛型,则此方法可以正常工作,只是对象本身不应该是泛型类型。对于对象是泛型类型的情况,请调用fromJson(JsonElement, Type)