का उपयोग करके क्रमबद्ध कुंजी के साथ सीरियलाइज्ड JSON, मैं जैक्सन के साथ एक ग्रोवी/ग्रेल्स प्रोजेक्ट में एक कस्टम JSON (डी) क्रमबद्धता को बदलने की कोशिश कर रहा हूं।जैक्सन
मुझे जैक्सन को एक सुंदर 'प्राकृतिक' वर्णमाला क्रम में क्रमबद्ध कुंजी के साथ एक सुंदर मुद्रित JSON आउटपुट करने में परेशानी हो रही है। मैं इस की कोशिश की है (और कई रूपों):
mymap = [ ... ] // Some groovy map
def mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
def jsonstring = mapper.defaultPrettyPrintingWriter().writeValueAsString(mymap)
लेकिन जैक्सन हठ एक JSON जहां कुंजी एक यादृच्छिक क्रम में होने लगते हैं उत्पन्न करता है। मैंने ट्रीमैप के साथ 'mymap' के प्रकार को बदलने का प्रयास किया है, और उस स्थिति में सभी कुंजियों को अपेक्षित रूप से ठीक से क्रमबद्ध किया जाता है।
मैं अगर वहाँ एक रास्ता चाबियाँ बिना अनुसार क्रमबद्ध एक ट्री-मैप (और रिकर्सिवली अपने मानचित्र सभी मान ...) के लिए ऊपर 'mymap की बदलती पाने के लिए है सोच रहा हूँ।
SORT_PROPERTIES_ALPHABETICALLY ठीक से ऐसा करने का इरादा है, लेकिन यह किसी कारण से ऐसा नहीं कर रहा है। क्या आप जानते हैं कि ऐसा क्यों है? मैं कुछ भी गलत कर रहा हूँ?
मैंने जैक्सन 1.8.3, 1.8.8 और 1.9.5, उसी परिणाम (यादृच्छिक कुंजी) के साथ प्रयास किया है।
अच्छा बिंदु इस्तेमाल कर सकते हैं, मुझे लगता है कि याद किया। ऐसा लगता है कि मुझे केवल क्रमबद्धता वरीयता निर्धारित करने का अच्छा सुरुचिपूर्ण तरीका भूलना पड़ सकता है। –
आपको ऐसा करने में सक्षम होना चाहिए: 'def jsonstring = mapper.defaultPrettyPrintingWriter()। WriteValueAsString (TreeMap के रूप में mymap)' क्या आप नहीं कर सकते? –
नहीं जो मदद नहीं करता है। 'Mymap' का कार्यान्वयन TreeMap नहीं है। और यहां तक कि अगर यह भी था, तो मुझे यह सुनिश्चित करना होगा कि 'mymap' में अन्य सभी मानचित्र मान भी TreeMap हैं, और यही वह जगह है जहां यह बहुत मुश्किल हो जाता है। –