【问题标题】:Gson deserialisation returns nullGson 反序列化返回 null
【发布时间】:2012-03-18 03:01:57
【问题描述】:

我在将 JSON 字符串转换为 Android 中的对象时遇到问题。以下是 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 还不熟悉,请问如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: json gson


    【解决方案1】:

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

    GSON documentationGson.fromJson(JsonElement, Class&lt;T&gt;)(粗体是我的):

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

    【讨论】:

    • 感谢您的好点子和友善的回答!你节省了我的时间。
    • @user1090973:如果这回答了您的问题,请务必勾选复选标记以选择此作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多