मैं एक जावा स्ट्रिंग में एक जावा ऑब्जेक्ट को बदलने की कोशिश कर रहा हूं और यह एक StackoverflowError के साथ विफल हो जाता है, शायद इसलिए ऑब्जेक्ट की उप-वस्तुओं में एक अपर्याप्त लूप / चक्र के कारण।
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:505)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:639)
Caused by: java.lang.StackOverflowError
at java.lang.ClassLoader.defineClass1(Native Method)
...
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:655)
मैं जिस वस्तु को एनकोड करने की कोशिश कर रहा हूं, वह एक ऐसी श्रेणी का उदाहरण है जिसका मेरे पास कोई नियंत्रण नहीं है। मैं केवल इसे उप-वर्ग कर सकता हूं। मुझे लगता है कि मुझे जोड़ना चाहिए @JsonIgnore
दोषी क्षेत्र पर (मैं इसी ओवरराइड गेट्टर विधि का मतलब है) लेकिन मुझे पता नहीं है कि यह कौन सा है। वे सैकड़ों क्षेत्र और उप वस्तुओं के साथ विशाल वर्ग हैं।
क्या यह जानने का एक आसान तरीका है कि क्या क्षेत्र जोंस एन्कोडिंग में अनंत लूप का कारण है?
पुनश्च: इसके साथ परिचित लोगों के लिए, यह है Patient
Hl7 HAPI FHIR ढांचे का वर्ग। मुझे पता है कि उस ढांचे के साथ आने वाला एक कस्टम जोंस धारावाहिक है, लेकिन मुझे इसकी कुछ विशेषताओं का लाभ उठाने के लिए अधिक सामान्य जैकसन का उपयोग करने की आवश्यकता है।
बहुत धन्यवाद
उत्तर:
जवाब के लिए 0 № 1यह तब होगा जब आपके ऑब्जेक्ट ग्राफ में एपरिपत्र निर्भरता। वहाँ वास्तव में एक आसान तरीका नहीं है जिसे मैं चक्र को खोजने के लिए जानता हूं। आप सब कुछ @ पता लगा सकते हैं, फिर खेतों को बैचों में फिर से पेश कर सकते हैं और देखें कि यह कहां टूटता है।
यदि आप @Ignore के साथ केवल टिप्पणी करने के लिए उपवर्ग कर रहे हैं, तो आपको देखना चाहिए जैक्सन mixins
जवाब के लिए 0 № 2
आमतौर पर अपवाद में अभी भी शामिल होना शामिल होना चाहिए ग्राफ (संपत्तियों के नाम जिसके माध्यम से चक्र का गठन हुआ); क्या यहाँ ऐसा नहीं है?