0

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?

Antwort

0

Die einfachste Lösung ist eine Website wie diese zu verwenden json to pojo. Diese Website nimmt Ihren json als Eingabe und generiert Pojo-Klassen, die speziell für die Verwendung mit gson erstellt wurden. Gson deserialisiert dann Ihren JSON ohne Probleme.

+0

Ich habe das versucht, aber das hilft nicht, da es mehr als ein Vorkommen davon auf rekursive Weise gibt – Nik

Verwandte Themen