2016-05-17 96 views
2

我從包含密鑰'id'的服務器(而不是我的服務器)獲取json。 我想將其反序列化爲我的對象內部名爲'jsonId'的變量。 我用@SerializedName(「id」)來做到這一點,但問題是我的對象也有變量稱爲id,並因爲我得到重複錯誤。Gson將字段反序列化爲具有不同名稱的變量,儘管變量帶有字段名稱

如何將'id'映射到變量'jsonId',而igonring'id'變量?

謝謝。

+0

被命名爲「id」的字段是否意味着成爲序列化內容的一部分? –

回答

2

我可以想到兩個選擇。

一種選擇是將名爲id的字段標記爲transientGson ignores any field modified with transient.

如果某個字段被標記爲瞬態,(默認情況下)它將被忽略並且不包含在JSON序列化或反序列化中。

另一種選擇是@Expose來註釋jsonId場(和所有其他相關領域),建立自己的Gson實例來排除字段,而註釋。例如,

Gson mapper = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); 

GSON現在只反序列化都標註了@Expose這些領域。它不會考慮其他人。

+0

太棒了!我不知道揭露也適用於反序列化。 謝謝:) –

相關問題