2012-12-13 12 views
5

Powiedzmy mam klas Java, który wygląda tak:Jackson: serializacji do JSON na obiekty przy użyciu obiektów zagnieżdżonych, łączenie pól dziecko w posiadanie klasy

public class A { 
    public String name; 
    public B b; 
} 

public class B { 
    public int foo; 
    public String bar; 
} 

Chcę serializacji instancji A do JSON. Mam zamiar użyć klasy ObjectMapper z Jackson:

A a = new A(...); 
String json = new ObjectMapper().writeValueAsString(a); 

Za pomocą tego kodu, mój JSON będzie wyglądać następująco:

{ 
    "name": "MyExample", 
    "b": { 
     "foo": 1, 
     "bar": "something" 
    } 
} 

Zamiast tego chcę opisywać moje klas Javy tak, że wygenerowany JSON będzie wyglądał następująco:

{ 
    "name", "MyExample", 
    "foo": 1, 
    "bar": "something" 
} 

Jakieś pomysły?

Odpowiedz

9

Osobiście uważam, że może być lepiej od struktury mapowania do struktury, a nie do dodatkowych przekształceń.

Ale jeśli chcesz iść z planem, po prostu użyj Jackson 2.x i dodaj adnotację @JsonUnwrapped na nieruchomości b. To powinno wystarczyć.

+1

W rzeczywistości, '@ JsonUnwrapped' jest dostępny w Jackson 1.9.x (codehaus zamiast pakietu szybciejxml). Niemniej jednak TO ROZWIĄZANIE DZIAŁA SIĘ WIELKIM! Wielkie dzięki: D – ecbrodie

+0

Ah. Masz rację. :) – StaxMan

+0

Mam już ten sam problem, ale ta adnotacja go nie rozwiązała. Moja własność jest prywatna i kiedy upubliczniam ją tak, aby pasowała do opisu, zaczyna narzekać na metody pobierania klasy B. – Sarge

Powiązane problemy