Gson反序列化返回null

sun*_*hun 1 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
}
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

活动:

Gson gson = new Gson();
Result<DeviceSetting> setting = gson.fromJson(result, Result<DeviceSetting>.class);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Ken*_*nde 6

可能该result字段为null,因为它依赖于type参数Result.

GSON文档中获取Gson.fromJson(JsonElement, Class<T>)(粗体是我的):

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