【问题标题】:Gson().fromJson returns null in AndroidGson().fromJson 在 Android 中返回 null
【发布时间】:2017-04-30 14:40:01
【问题描述】:

我正在尝试反序列化从 api 获得的错误消息,这是我的字符串:

{"Message":"Ya existe un usuario registrado con ese email"}

但是当我这样调用 Gson 时,它会返回一个带有空值的 NetworkError

String message = new Gson().fromJson(jsonMessage, NetworkError.class).getMessage();

我一直在研究类似的问题,并意识到NetworkError 类中一定有问题,但我不知道是什么问题。这是课程:

public class NetworkError {

    private String message;

    public NetworkError(final String message) {
        this.message = message;
    }

    public String getMessage() { return message; }
}

我尝试过包含一个 set 方法和一个空的构造函数,但我仍然得到 null。 谢谢

【问题讨论】:

    标签: android json gson deserialization


    【解决方案1】:

    NetworkError.java 类中,尝试将类中的 message 变量更改为 Message,因为这是您在 REST 响应中收到的密钥,并且在映射密钥时可能会导致问题。

    我可以理解,您可能仍希望使用驼峰式大小写作为变量名。您可以使用 @SerializedName 注释来保留您想要的任何变量名称,但仍然有 GSON 映射到它。你可以阅读更多what is the basic purpose of @SerializedName annotation in android using GSon

    【讨论】:

    • 感谢您的回答和关于使用注释的提示
    【解决方案2】:

    JSON 中的键区分大小写。因此,Gson 正在寻找不存在的“消息”键(您正在使用“消息”键)。

    你可以这样做:

    @SerializedName("Message")
    private String message;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多