Gson()。fromJson在Android中返回null

时间:2017-04-30 14:40:02

标签: android json gson deserialization

我试图反序列化从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。 感谢

2 个答案:

答案 0 :(得分:3)

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

我可以理解你仍然可能想要使用驼峰案例作为你的变量名。您可以使用@SerializedName注释来保存您想要的变量名称,但仍然可以使用GSON映射。您可以在what is the basic purpose of @SerializedName annotation in android using GSon

上阅读更多内容

答案 1 :(得分:0)

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

你可以这样做:

@SerializedName("Message")
private String message;