2014-02-13 7 views
7

Ich weiß, dass Jackson flach json mit @JsonUnwrapped so das Objekt einer Klasse wieflachen Gegenstand Form verschachtelt json mit Jackson Erstellen

public class Person { 
    public int age; 
    @JsonUnwrapped public Name name; 

    public class Name { 
     public String first, last; 
    } 
} 

serialisiert werden würde in

{"age" : 99, "first" : "Name", "last" : "Surname"} 

ich jedoch erstellen kann, kann nicht einen Weg finden, das Gegenteil zu tun - haben Sie eine Klasse wie

und haben ihre o Objekt serialisiert in und deserialisiert von

Ist dies mit Jackson 1.9 möglich?

+0

Nicht so weit wie ich weiß. Das gesamte Konzept _wrapped_ würde bei einer einkapselnden Klasse/Objekt wie "Name" viel mehr Sinn machen. –

+0

yup, ich denke du brauchst ein Name Objekt um das erste und letzte zu halten – tom

+1

Das ist enttäuschend, danke trotzdem ... Etwas wie '@JsonProperty (" name.first ") public String firstName;' wäre super ... –

Antwort

5

Ich stolperte über diese ziemlich alte Frage, als ich nach dem gleichen suchte. Ich endete damit:

public class Person { 
    public int age; 

    @JsonIgnore 
    public String firstName, lastName; 

    protected void setName(PersonName name) { 
    firstName = name.first; 
    lastName = name.last; 
    } 

    protected PersonName getName() { 
    return new PersonName(firstName, lastName); 
    } 

    protected static class PersonName { 
    private final String first, last; 

    @JsonCreator 
    public PersonName(@JsonProperty("first") String first, @JsonProperty("last") String last) { 
     this.first = first; 
     this.last = last; 
    } 
    } 
} 
+1

Gibt es eine einfache Lösung? –

Verwandte Themen