2012-12-08 18 views
6

इस संदर्भ to a question I asked a month back में है करने के लिए serializing हाइबरनेट आलसी init अपवाद से बचने के लिए।एक बेहतर तरीका है जब एक json प्रतिक्रिया

In this question आलसी init अपवाद से बचने के लिए जवाब जब जेसन सीरियलाइजिंग आलसी अपवाद अपवाद के कारण चर को सेट करने के लिए था। लेकिन इस बात पर विचार करें कि कक्षा में कई निर्भरताएं हैं। अब कोड बेस उगाया जाता है और जेसन सीरियलाइजिंग समस्या से बचने के लिए हर बार मुझे कोड में हर जगह परेशानी चर के लिए शून्य सेट करना पड़ता है। कोड बेस बड़ा होने पर विधि साफ दिखती नहीं है।

एक उदाहरण कोड कि नीचे दिखाया गया है अच्छा नहीं लगता है।

//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); 

क्या आप कृपया मुझे इस समस्या को संभालने का एक बेहतर तरीका सुझा सकते हैं। धन्यवाद।

उत्तर

4

आप @JsonIgnore ताकि जैक्सन यह ध्यान नहीं देता है, जबकि serializing के साथ आलसी गुण टिप्पणी कर सकते हैं।

+0

त्वरित उत्तर के लिए बहुत धन्यवाद। एक सवाल, क्या यह उस क्षेत्र को अनदेखा करता है जब भी deserializing? –

+0

ऐसा लगता है, http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html मैं इसे – Subin

+1

json 1.9 के बाद दोनों setters और getters अनदेखी कर रहे हैं से प्रयास नहीं किया है। यदि धारावाहिकता को अनदेखा करने का एकमात्र हिस्सा है तो जेसन इग्नोर एनोटेशन को गेटटर विधि में उपयोग करने की आवश्यकता है और इसे deserialization और vise-versa को अनदेखा करने से बचने के लिए क्षेत्र या सेटटर विधि में जेसनप्रोपर्टी एनोटेशन जोड़ने की भी आवश्यकता है। मदद के लिए धन्यवाद सबिन !!! –

संबंधित मुद्दे