2017-04-04 5 views
2

Derzeit versuche ich JSON APIs durch Java-Code zu automatisieren. Ich habe den JSON erfolgreich ohne Verschachtelung ausgeführt. Jetzt in unserer API gibt es geschachtelte JSON, die ich durch POJO automatisieren muss ... Wie kann ich es tun ..Wie verschachtelte JSON mit Jackson schreiben?

Eine API arbeitete für mich, die einzelnen Parameter hat.

JSON für die API

{ 
    "userId": 1 

    }, 

Java-Klasse für sie.

Jetzt habe ich eine API, die mehrere verschachtelte Parameter hat.

Nested JSON

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

Wie kann ich schreiben Java-Klasse für das?

Vielen Dank im Voraus!

Antwort

7

Verwenden Sie link, um Ihre JSON in Java-Klasse zu konvertieren, fügen Sie einfach Ihre JSON hier Download Klasse Struktur.

Sie können auf geschachteltes Json-Feld zugreifen, indem Sie. (Dot) Betreiber

Ex: Wenn Sie den Zugriff ID von GlossEntry Verwendung Code folgende

ObjectMapper mapper = new ObjectMapper(); 
    String jsonString=""; 
    Glossary_ sc=mapper.readValue(jsonString,Glossary_.class); 

System.out.println("ID:"+sc.getGlossDiv().getGlossList().getGlossEntry().getID()); 
+0

Dieser Link funktioniert. Vielen Dank! – mashkurm

2

Sie müssen Ihre JSON-Struktur mit Java-Klassen replizieren. In Ihrem Fall sollte es so etwas wie sein:

public class Glossary { 
     String title; 
     GlossDiv glossDiv; 
     {getters, setters} 
} 

public class GlossDiv { 
     String title; 
     GlossList glossList; 

     public getGlossList() { 
      return glossList; 
     } 

     public setGlossList(GlossList glossList) { 
      this.glossList = glossList; 
     } 
} 

Und so weiter, für jedes verschachtelte Objekt.

+0

Können Sie bitte für nur 1 Klasse Getter und Setter schreiben (Say Glossay?) .. Ich bezweifle wie man Getter und Setter für die GlossList-Klasse schreibt? – mashkurm

+0

Vielen Dank .. Machte meinen Tag .. Eine letzte Frage .. Was tun mit "GlossSeeAlso": ["GML", "XML"], die [] Klammern hat? – mashkurm

+0

Sie können dieses Feld als eine Liste von Zeichenfolgen definieren oder was immer Sie darin speichern möchten. – Headake

Verwandte Themen