2016-11-22 10 views
0

Lets sagen, ich habe Objekt wie dieseJackson Mapping json auf Objekte

{ 
    first: "value", 
    second: "value", 
    third: { 
    first: "first value third", 
    second: "second value third", 
    fourth: { 
     first: "second nested object", 
     second: "second nested object" 
    }, 
    fifth: { 
     first: "another second nested object", 
     second: "another second nested object" 
    } 
    }, 
    sixth: { 
    first: "value", 
    second: "value" 
    } 
} 

I RestTemplate Klasse ist mit json von URL wie folgt zu holen:

RestTemplate rest = new RestTemplate(); 
String result = rest.getForObject(ENDPOINT_URL, String.class); 

danach Ich mag würde werfen die json Zeichenfolge auf ein Objekt unter Verwendung von Jackson Objektabbildern

import com.fasterxml.jackson.databind.ObjectMapper 

die Entitätsklasse als zweiten Parameter übergeben

ObjectMapper mapper = new ObjectMapper(); 
object = mapper.readValue(result, ExampleJson.class); 

Die Frage ist, wie sollte ich ExampleJson Entität schreiben, um eine get json zu behandeln? Ich habe es mit der Klasse versucht, aber es scheint nicht zu funktionieren.

public class ExampleJson { 
    private String first; 

    private String second; 

    private Third third; 

    private Sixth sixth; 

    // Getters && Setters 

    public static class Third { 
    private String first; 

    private String second; 

    private Fourth fourth 

    private Fifth fifth 

    // Getters && Setters 

    private Fourth { 
     private String first; 

     private String second; 

     // Getters && Setters 
    } 

    private Fifth { 
     private String first; 

     private String second; 

     // Getters && Setters 
    } 
    } 

    public static class Sixth { 
    private String first; 

    private String second; 

    // Getters && Setters 
    } 

} 

Ich bin eine Ausnahme wie folgt erhalten:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 
Unrecognized field "fourth" 
+1

Ist das Objekt immer im selben Format oder kann es sich dynamisch ändern? –

+1

innere Klassen müssen statisch sein oder auf andere Weise instanziiert werden, z. B. gibt es keinen Nullargumentkonstruktor oder Anmerkungen. http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – StackTraceYo

+0

Kommentieren Sie die Klasse, die Sie deserialisieren, mit '@JsonIgnoreProperties (ignoreUnknown = true)' – teppic

Antwort

0

FYI

@JsonIgnoreProperties(ignoreUnknown = true) 

das Problem gelöst!

Danke.

Verwandte Themen