2013-03-07 11 views
5

Sto lavorando su POC del servizio REST jersey che deve essere utilizzato da js MVC framework. Su una delle forme ho bisogno di restituire l'oggetto UserProfile (serializzato su JSON da Jackson) che verrà usato per precompilare il modulo HTML. All'invio del modulo solo un sottoinsieme di campi deve essere inviato al server (poiché alcuni campi come "ruolo" sono di sola lettura e non devono essere modificati), quindi l'input JSON verrà mappato all'oggetto UserProfileUpdateRequest. Dal punto di vista della manutenzione del codice server mi piacerebbe avere una relazione tra questi 2 oggetti, dal momento che UserProfileUpdateRequest sarà un sottoinsieme di UserProfile, quindi la mia prima scelta è usare la composizione: UserProfile contiene UserProfileUpdateRequest. Il problema è che quando UserProfile è serializzato su JSON da jackson, tutte le proprietà dell'istanza UserProfileRequest referenziata saranno racchiuse nel campo userProfileRequest - ciò che sembra essere abbastanza naturale ma non è accettabile per i ragazzi di JS (o almeno mi è stato detto che non è accettabile). C'è un modo in cui potrei forzare Jackson a un oggetto radice "piatto" e puntare a quali oggetti di riferimento le sue proprietà devono essere serializzate sotto root? Un piccolo esempiojackson serializza i campi oggetto di riferimento su root

class UserProfileRequest{ 
private String a; 
private String b; 
... 
} 

class UserProfile{ 
private String role; 
... 
private UserProfileRequest userProfileRequest; 
} 

Così, quando ProfiloUtente viene serializzato ho ottenuto:

{"role":"admin",...,"userProfileRequest":{"a":"...","b":"...",...}} 

ma vorrebbe ottenere

{"role":"admin",...,"a":"...","b":"...",...} 

Sto usando Jackson 1.9.7.

risposta

14

Penso che stiate cercando l'annotazione @JsonUnwrapped.

class UserProfile{ 
    private String role; 
    ... 
    @JsonUnwrapped 
    private UserProfileRequest userProfileRequest; 
} 

Edit: Ecco il link per @JsonUnwrapped in Jackson 1.9.9, quindi dovrebbe essere disponibile in 1.9.7, anche.

+0

TH Noce simile. Funziona bene. – user62058

Problemi correlati