2017-10-08 1 views
0

Ich versuche, JSON mit GSON zu deserialisieren. Ich habe versucht, die Antwort in http://www.jsonschema2pojo.org/ auszuführen, aber die variablen Feldnamen in "Daten" verursachen Probleme.Deserialisieren von JSON mit GSON mit variablen Kindnamen

Meine Frage ist

  1. Was sollte die Hauptklasse aussehen?

  2. Und wie sollte die Klasse "data" aussehen? Berücksichtigen Sie, dass die Knoten unter Daten für jeden Aufruf unterschiedlich sind?

  3. Wie lese ich "Daten" in eine Liste in Android Studio? Hier

ist die json response

Antwort

0
  1. Angenommen, Ihre JSON Eingabe ein String ist genannt jsonString und wir haben unsere Datenklasse namens Dataclass dann Ihre Haupt etwas sollte wie folgt aussehen:

    Gson gson = new Gson(); 
    DataClass[] dataClassArray = gson.fromJson(jsonString, DataClass[].class); 
    
  2. Der Trick hier ist, die "Daten" als Map<String, HashMap<String, String>> serialisiert zu haben. Ihre Dataclass sollte wie folgt aussehen:

    class DataClass { 
        private Integer id; 
        // ... 
        // TODO: add the rest of your properties... 
        // ... 
        private HashMap<String, HashMap<String, String>> data; 
    
        public Integer getId() { 
         return id; 
        } 
    
        public void setId(Integer id) { 
         this.id = id; 
        } 
    
        // ...    
        //TODO: add getters/setters for the rest of your properties... 
        // ... 
    
        public HashMap<String, HashMap<String, String>> getData() { 
         return data; 
        } 
    
        public void setData(HashMap<String, HashMap<String, String>> data) { 
         this.data = data; 
        } 
    } 
    
  3. Siehe # 1 (Dataclass [] Klasse.). Sie können das Array in eine Liste konvertieren, wenn Sie wirklich wollen.

+0

Ich empfehle dringend, dass Sie dies in einem Komponententest testen. Kopieren Sie Ihre json-Eingabe in eine Zeichenfolgenvariable und führen Sie Code aus # 1 aus. Sie können einen Haltepunkt setzen und sehen, was in dataClassArray geparst wird. Für mich funktionierte es in einem Unit Test. – akrabi

+0

Hat das für Sie funktioniert? – akrabi

Verwandte Themen