2012-12-08 9 views
6

Questo è in riferimento to a question I asked a month back.Un modo migliore per evitare l'eccezione di init pigro durante la serializzazione in una risposta JSON

In this question la risposta per evitare l'eccezione di init pigro quando serializzazione json era di impostare null alle variabili che causano l'eccezione di init pigro. Ma considera quando la classe ha molte dipendenze. Ora con il codice base viene cresciuto e ogni volta devo impostare null alle variabili fastidiose in tutto il codice per evitare problemi di serializzazione json. Il metodo non sembra accurato quando la base del codice è grande.

Un codice di esempio è mostrato sotto che non sembra buono.

//setting some variables to avoid lazy init exception in jackson mapper serialization 
batch.setEnrollmentList(null); 
List<BatchSchedule> scheduleList = (ArrayList<BatchSchedule>) batch.getBatchScheduleList(); 

      for (BatchSchedule batchSchedule : scheduleList) { 
       batchSchedule.setBatch(null); 
      } 
      batch.getLecturer().setBatchList(null); 
      batch.getLecturer().setSubjectList(null); 
      batch.getSubject().setBatchList(null); 
      batch.getSubject().setLecturerList(null); 

Potete per favore suggerirmi un modo migliore per gestire questo problema. Grazie.

risposta

4

È possibile annotare le proprietà lazy con @JsonIgnore in modo che Jackson lo ignori durante la serializzazione.

+0

Mille grazie per la rapida risposta. Una domanda, ignora quel campo anche quando deserializza? –

+0

sembra così, http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html Non l'ho provato – Subin

+1

da json 1.9 in poi sia i setter che i getter sono ignorati. Se la serializzazione è l'unica parte da ignorare, è necessario utilizzare l'annotazione JsonIgnore nel metodo getter e inoltre aggiungere l'annotazione JsonProperty al metodo field o setter per evitare di ignorare la deserializzazione e viceversa. Grazie Subin per l'aiuto !!! –

Problemi correlati