2010-06-29 8 views
12

मैं जैक्सन जेएसओएन प्रोसेसर के माध्यम से एक स्ट्रिंग के रूप में हैश मैप को क्रमबद्ध करना चाहता हूं। उदाहरण के लिए:हैश मैप में शून्य मान क्रमबद्धता से कैसे बचें?

String strMap = getMapper().writeValueAsString(myHashMap); 
result output -> {"r_id":6,"a_am":null,"smb":"Submit","a_li":null,"l_id":878,"pos":[1345,1346,1347]} 

मैं मानचित्र के लिए शून्य मान क्रमबद्धता निष्क्रिय करने के लिए कैसे पता नहीं है। यह केवल POJO के लिए ठीक काम करता है इस तरह जैक्सन कॉन्फ़िगर करते हैं:

mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL); 

उत्तर

19

क्या इसके लायक है के लिए, जैक्सन 1.6 यह करना होगा:

objectMapper.configure(SerializationConfig.WRITE_NULL_MAP_VALUES, false); 

जो आप चाहते क्या करता है। मौजूदा विधि केवल बीन्स के लिए काम करती है, और अधिकतम पिछड़ा संगतता सुनिश्चित करने के लिए इसे बदला नहीं जा रहा है।

संपादित करें: टिप्पणियों पर ध्यान के अनुसार, यह जैक्सन 1.x के लिए है; जैक्सन 2.x SerializationFeature

+0

और 1.6 कुछ दिनों पहले ही जारी किया गया था। – StaxMan

+2

अब यह 'mapper.configure (SerializationFeature.WRITE_NULL_MAP_VALUES, false) ' –

3

मिलान है या आप @JsonWriteNullProperties (गलत) के साथ अपने सेम जो होगा

+1

1 के रूप में दिखता है।?, @JsonInclude (value = includee.NON_NULL) –

+4

का उपयोग करें ऐसा लगता है कि @JsonInclude (value = Include.NON_NULL) को बहिष्कृत किया गया है। तो सेम के लिए धारावाहिक होने के लिए कक्षा में '@JsonSerialize (शामिल = समावेशन.NON_NULL) जोड़ें। Http://wiki.fasterxml.com/JacksonFAQ भी देखें। –

+0

आप कहां देखते हैं कि @JsonInclude को बहिष्कृत किया गया है? यह स्पष्ट रूप से सूचीबद्ध है https://github.com/FasterXML/jackson-annotations/wiki/JacksonAnnotations –

11

यहाँ शून्य क्षेत्रों

@JsonSerialize अनदेखी के लिए नवीनतम एनोटेशन (शामिल = JsonSerialize है टिप्पणी कर सकते हैं। समावेशन.NON_NULL)

7

जैक्सन 2.1.2 का उपयोग करके मैंने पाया है कि मैं कक्षा को @JsonInclude(Include.NON_NULL) के साथ एनोटेट कर सकता हूं ताकि नल को क्रमबद्ध नहीं किया जा सके।

+0

इसके बीच और @JsonSerialize के बीच क्या अंतर है? –

1

नवीनतम जैक्सन संस्करण के साथ, ObjectMapper पर, आप कर सकते हैं:

mapper.setSerializationInclusion (JsonInclude.Include.NON_NULL);

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