2017-05-03 15 views
-1

Ich würde gerne wissen, wie ich diesen Teil einer JSON-Datei in einer Java-POJO-Struktur darstellen kann. Die JSON-Datei hat sich eine Struktur, die ich noch nie zuvor gesehen:GSON - Umgang mit geschweiften Klammern

"codeShares": [ 
     { 
      "codeShare": { 
      "airlineCode": "LH", 
      "trackNumber": "9695", 
      "suffix": "" 
      } 
     }, 
     { 
      "codeShare": { 
      "airlineCode": "NH", 
      "trackNumber": "5350", 
      "suffix": "" 
      } 
     }, 
     { 
      "codeShare": { 
      "airlineCode": "TP", 
      "trackNumber": "8988", 
      "suffix": "" 
      } 
     }, 
     { 
      "codeShare": { 
      "airlineCode": "UA", 
      "trackNumber": "7212", 
      "suffix": "" 
      } 
     } 
     ] 

Wenn es nicht diese „Code-Share“ waren Tags jedes Mal, aber ein „normales“ Array, ich würde verstehen, wie es zu vertreten ein POJO, aber wie ich getestet habe, funktioniert eine Liste nicht. Die Größe der Liste entspricht der Anzahl der "codeShare" -Tags in der Datei, aber die tatsächlichen Werte wie "airlineCode" usw. sind immer null. Wenn es nicht Liste <> ist, was muss ich nehmen?

Code-Share-Klasse:

private String airlineCode; 
private String trackNumber; 
private String suffix; 

    public CodeShare(String airlineCode, String trackNumber, String suffix) { 
     this.airlineCode = airlineCode; 
     this.trackNumber = trackNumber; 
     this.suffix = suffix; 
    } 

    public String getAirlineCode() { 
     return airlineCode; 
    } 

    public String getTrackNumber() { 
     return trackNumber; 
    } 

    public String getSuffix() { 
     return suffix; 
    } 

    @Override 
    public String toString() { 
     return airlineCode + trackNumber; 
    } 

Kenta1561

+0

Es gibt Werkzeuge dafür: siehe http://www.jsonschema2pojo.org/ zum Beispiel (Verwendung Quelle JSON auf der rechten Seite) –

+0

Thank you! Ich habe herausgefunden, dass ich zwei Klassen für "CodeShare" erstellen muss: D – wafflemiracle

Antwort

0

eine andere Klasse erstellen, die Code-Share-Objekt enthält.

z.

public class CodeShareWrapper { 
    public CodeShare codeShare; 

    public CodeShareWrapper() {} 
} 

Jetzt Response-Klasse wird wie sein:

public class MyResponse { 
    public List<CodeShareWrapper> codeShares; 

    public MyResponse() {} 
} 

Verwendung MyResponse mit Retrofit oder während de-Serialisierung JSON-Antwort Gson verwenden.

MyResponse = new Gson().fromJson(jsonString, MyResponse.class); 
Verwandte Themen