2013-03-13 12 views
5

Io uso Spring e sto creando un servizio REST.Have jackson ignora i campi che sono pigri inizializzati durante la serializzazione a JSON

Ecco una parte del mio regolatore:

@RequestMapping("/get") 
public @ResponseBody Person getPerson() { 
    Person person = personRepository.findOne(1L); 
    //(1) person.setRoles(null); 
    return person; 
} 

ruoli della persona sono pigri inizializzato, e non serve al momento. Quando (1) è commentata, tutto ciò non riuscirà con un

org.springframework.http.converter.HttpMessageNotWritableException: Impossibile scrivere JSON: impossibile inizializzare pigramente una collezione di ruolo: no.something.project .Person.roles, non potevano inizializzare procura - senza Session ecc

posso risolvere questo facendo come (1), impostare manualmente su null (o qualche altro valore), in modo da non sicuro quando Jackson tenta di serializzare il mio oggetto.

Tuttavia, questo è fastidioso e deve essere fatto molte volte luoghi diversi. Mi piacerebbe che alcune semplici soluzioni ignorassero quei pigri campi inizializzati quando non erano inizializzati, o semplicemente li impostassero su null.

Nota: @JsonIgnore sui valori sull'oggetto non è una soluzione, come negli altri casi voglio che questi valori siano inclusi.

risposta

5

Verificare Jackson Views per Jackson Filters (entrambi sono supportati da Spring come ricordo).

Inoltre, utilizzare i campi di pigri (se non sono esclusi) è necessario - jackson-module-hibernate

+0

Come si usa jackson-modulo-ibernazione con la Primavera? Il codice sul wiki manca qualcosa. – Matsemann

+0

Ho fatto un pullrequest al progetto, fornendo codice di lavoro. – Matsemann

+0

@Matsemann Ho ottenuto la soluzione qui e fornito il codice funzionante: http://stackoverflow.com/questions/21708339/avoid-jackson-serialization-on-non-fetched-lazy-objects/21760361#21760361 – r1ckr

Problemi correlati