2016-05-30 22 views
2

Betrachten ich solche json Fragment (Teil komplexer json) haben:Parse Folge von ähnlichen Blöcken wie Map <String, Type>

"foo": { 
    "abc": { 
     "prop1": "blabla11"; 
     "prop2": "blabla12"; 
     "prop3": "blabla13"; 
    }, 
    "bcd": { 
     "prop1": "blabla21"; 
     "prop2": "blabla22"; 
     "prop3": "blabla23"; 
    }, 
    ... 
} 

D.h. Alle abc, bcd usw. haben die gleiche interne Struktur.

Ist eine elegante Möglichkeit, folgende java Struktur zu kommentieren, um sie über jackson zu Objekt Foo Klasse zu analysieren?

Hinweis:foo ist nicht Root-Struktur, also kann ich es nicht separat analysieren.

Antwort

-1

Definieren Sie eine größere Struktur, die Sie verwenden können, um den komplexeren JSON einzulesen. Verwenden Sie @JsonIgnoreProperties, um unbekannte Bits zu ignorieren.

Try this:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class LargerStructure { 

    private Foo foo; 

    public Foo getFoo() { 
     return foo; 
    } 

    public void setFoo(Foo foo) { 
     this.foo = foo; 
    } 
} 


public class App { 

    public static void main(String ...args){ 

     File input = new File("largerInput.json"); 
     LargerStructure largerStructure = deserialise(input); 
     System.out.println(largerStructure.getFoo()); 
    } 


    public static LargerStructure deserialise(File input){ 

     LargerStructure largerStructure = null; 

     try { 

      ObjectMapper mapper = new ObjectMapper(); 
      largerStructure = mapper.readValue(input, LargerStructure.class); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return largerStructure; 
    } 
} 
+0

Wie dies wird mir helfen, 'foo' Struktur zu analysieren als 'Map '? – Andremoniy

+0

Ihre Frage war, wie Sie das Fragment zu einem Foo-Objekt analysieren, wobei das foo-Element nicht die Wurzel war. Der Code in der Antwort wird das tun. Wenn Sie weiterhin Probleme haben, stellen Sie sicher, dass Sie die richtigen Zugriffsmethoden für die Mitgliedsvariablen in den Klassen Foo und FooItem haben. – maccaroo

+0

Wird es die Map 'Map ' füllen? Hast du es versucht? – Andremoniy