我從包含密鑰'id'的服務器(而不是我的服務器)獲取json。 我想將其反序列化爲我的對象內部名爲'jsonId'的變量。 我用@SerializedName(「id」)來做到這一點,但問題是我的對象也有變量稱爲id,並因爲我得到重複錯誤。Gson將字段反序列化爲具有不同名稱的變量,儘管變量帶有字段名稱
如何將'id'映射到變量'jsonId',而igonring'id'變量?
謝謝。
我從包含密鑰'id'的服務器(而不是我的服務器)獲取json。 我想將其反序列化爲我的對象內部名爲'jsonId'的變量。 我用@SerializedName(「id」)來做到這一點,但問題是我的對象也有變量稱爲id,並因爲我得到重複錯誤。Gson將字段反序列化爲具有不同名稱的變量,儘管變量帶有字段名稱
如何將'id'映射到變量'jsonId',而igonring'id'變量?
謝謝。
我可以想到兩個選擇。
一種選擇是將名爲id
的字段標記爲transient
。 Gson ignores any field modified with transient
.
如果某個字段被標記爲瞬態,(默認情況下)它將被忽略並且不包含在JSON序列化或反序列化中。
另一種選擇是@Expose
來註釋jsonId
場(和所有其他相關領域),建立自己的Gson
實例來排除字段,而註釋。例如,
Gson mapper = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
GSON現在只反序列化都標註了@Expose
這些領域。它不會考慮其他人。
太棒了!我不知道揭露也適用於反序列化。 謝謝:) –
被命名爲「id」的字段是否意味着成爲序列化內容的一部分? –