2017-04-30 50 views
0

我試圖反序列化的錯誤信息,我從一個API獲取返回null,這是我的字符串:GSON()fromJson Android中

{"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。 感謝

回答

3

裏面NetworkError.java類,請嘗試更改message變量的類Message,因爲這是你在REST響應被接受的關鍵,它可能映射鍵時會造成問題。

我可以理解你仍然可能想爲你的變量名使用駱駝大小寫。您可以使用@SerializedName註釋來保留變量名稱,但仍然有GSON映射到它。你可以閱讀更多關於what is the basic purpose of @SerializedName annotation in android using GSon

+0

感謝您的回答和有關使用註釋的提示 – moondaisy

0

JSON中的鍵區分大小寫。因此,Gson正在尋找不在那裏的「消息」鍵(您正在使用「消息」鍵)。

你可以這樣做:

@SerializedName("Message") 
private String message;