所以我有這個問題與Gson我只是無法弄清楚。GSON商店Json鍵字符串變量
想象一下處理票據的Json結構。 JSON的是這樣的:
{
"concertTicket" : { ... some valid json object ... }
}
,我寫我的解析器是這樣的:
@SerializedName("concertTicket")
JsonObject ticketContent;
這很簡單。現在我有一個名爲ticketContent
的JsonObject,它存儲與票相關的東西。
到目前爲止這麼好......現在正好有三種不同的門票:我們假設concertTicket
,planeTicket
和museumTicket
。
我想實現的是帶有兩個變量的解析器。一個存儲ticketType
,另一個存儲ticketContents
。
我想通了解析器爲ticketContent
:
@SerializedName(value="concertTicket", alternate={"planeTicket", "museumTicket"})
JsonObject ticketContent;
我的問題是現在:是否可以寫一個返回一個名爲ticketType
變量的JSON-Key作爲字符串註釋?像這樣:
@ ... what to put here ? ...
String ticketType;
這樣
如果其concertTicket
的ticketType = "concertTicket"
值, 如果其planeTicket
的ticketType = "planeTicket"
價值和 如果其museumTicket
的ticketType = "museumTicket"
價值?
---這裏是我的解決辦法---
@SerializedName("concertTicket")
private JsonObject concertTicket;
@SerializedName("planeTicket")
private JsonObject planeTicket;
@SerializedName("museumTicket")
private JsonObject museumTicket;
public enum TicketType {
concertTicket, planeTicket, museumTicket
}
/*
* since only one of the TicketTypes can be not null, return this as TicketType
*/
public TicketType getTicketType() {
if (concertTicket != null) {
return TicketType.concertTicket;
}
if (planeTicket != null) {
return TicketType.planeTicket;
}
if (museumTicket != null) {
return TicketType.museumTicket;
}
return null;
}
/*
* since only one of the TicketTypes can be not null, return this as content
*/
public JsonObject getTicketContent() {
if (concertTicket != null) {
return concertTicket;
}
if (planeTicket != null) {
return planeTicket;
}
if (museumTicket != null) {
return museumTicket;
}
return null;
}
但我不知道是否有一個更優雅的解決方案呢?
我並不認爲這不是一個好主意。但Json不在我的控制之下。爲了清楚起見,我不關心作爲爭論的類別的相似之處,我只關心關鍵。 – grAPPfruit