我有一類這樣的:如何在擴展類改變@SerializedName,從GSON,屬性的
class A {
@Expose
@SerializedName("a_id")
private String id;
}
現在我想創建一個擴展B類,但是,在B,我想要將ID的序列化名稱更改爲「b_id」。有沒有辦法做到這一點?
我有一類這樣的:如何在擴展類改變@SerializedName,從GSON,屬性的
class A {
@Expose
@SerializedName("a_id")
private String id;
}
現在我想創建一個擴展B類,但是,在B,我想要將ID的序列化名稱更改爲「b_id」。有沒有辦法做到這一點?
開箱即不可能。您需要編寫一個自定義類型的適配器。請參閱Gson用戶指南的Custom Serialization and Deserialization部分。
申請@SerializedName( 「B_ID」),以在B中的設定器
類B { 私人字符串ID;
@SerializedName("b_id")
private void setId(String id);
}
從GSON版本2.4可以使用備用名稱。你的情況,你可以做這樣的:
class A {
@Expose
@SerializedName(value = "a_id", alternate="b_id")
private String id;
}
的格式是這樣的:
@SerializedName(value="name1", alternate={"name2", "name3"})
更多信息here。
這不會破壞班級合同嗎? B類對象將是B類的一個實例(由於繼承),但不會提供A類對象提供的ID字段... – SJuan76
我理解你的想法,但我不這麼認爲,因爲註釋會改變屬性的特性,就像getter和setters一樣,所以理論上我可以在一個小孩班上做到這一點。 – tpcordeiro
例如,Hibernate允許我[Hibernate繼承](http://viralpatel.net/blogs/2011/12/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping.html)請參閱「Hibernate繼承:Annotation Mapping「,其中@Inheritance發揮了作用。我只想知道GSON是否具有相同的功能。 – tpcordeiro