Ich habe die folgende Art von JSON, die vom Server kommt.Deserialisieren/Serialisieren von JSON mit Hilfe von RuntimeTypeAdapterFactory von Gson
{
"templates": [
{
"right": [...],
"left": [...],
"available": true,
"text": "some text here",
"configuration": {
"enabled": true,
"trigger": {
"triggerType": "MOVE",
"eventName": "MOVING"
}
}
},
{
"right": [...],
"left": [...],
"available": true,
"text": "some text here",
"configuration": {
"enabled": true,
"trigger": {
"triggerType": "DURATION",
"duration": 300,
"trigger": {
"triggerType": "HALT",
"description": "HAULTING"
}
}
}
}
]
}
Die JSON hat ein Objekt „Konfiguration“, die aus „Trigger“ rekursive Auftreten Element haben kann. Aber dieser Auslösetyp unterscheidet sich je nach Konfiguration.
Ich glaube, ich habe es geschaffen, andere Klasse für verschiedene Arten von Triggern mit der Basisklasse als "Trigger" wie folgt erstellen
public class Trigger{
private String triggerType;
public String getTriggerType() {
return triggerType;
}
public void setTriggerType(String triggerType) {
this.triggerType = triggerType;
}
}
und
public class TiggerMove extends Trigger{
private String eventName;
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
}
und
public class TiggerHault extends Trigger{
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
und
public class TiggerDuration extends Trigger{
private String duration;
private Tigger<T> trigger;
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getTrigger() {
return duration;
}
public void setTrigger(Trigger trigger) {
this.trigger = trigger;
}
}
Ich lese einige Antworten, die erwähnt, Gson's RuntimeTypeAdapterFactory zu verwenden. Aber ich kann es nicht wirklich verwenden, da ich alle Beispiele sehe, die es für Elemente der ersten Ebene und nicht für innere Elemente verwenden.
Wie kann ich es mit Android GSON deserialisieren?
Ich habe das versucht, aber das hilft nicht, da es mehr als ein Vorkommen davon auf rekursive Weise gibt – Nik