2013-02-06 17 views
5

से खाली Arrays को बाहर निकालें मैं Jackson ObjectMapper का उपयोग कर जावा ऑब्जेक्ट पेड़ से JSON बना रहा हूं। मेरी कुछ जावा ऑब्जेक्ट्स संग्रह हैं और कभी-कभी वे खाली हो सकती हैं। तो अगर वे खाली हैं कि ऑब्जेक्टमैपर मुझे उत्पन्न करता है: "attributes": [], और मैं अपने परिणाम से उन प्रकार के खाली JSON arrays को बाहर करना चाहता हूं। मेरे वर्तमान ObjectMapper config:जैक्सन ऑब्जेक्टमैपर

SerializationConfig config = objectMapper.getSerializationConfig(); 
config.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
config.set(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 

this post से मैं पढ़ा है कि मैं का उपयोग कर सकते हैं:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT); 

लेकिन वह मुझे एक त्रुटि पैदा कर रहा है:

Caused by: java.lang.IllegalArgumentException: Class com.mycomp.assessments.evaluation.EvaluationImpl$1 has no default constructor; can not instantiate default bean value to support 'properties=JsonSerialize.Inclusion.NON_DEFAULT' annotation. 

तो मैं कैसे बचा जा सकता है मेरे परिणाम में प्रकट होने के लिए उन खाली सरणी?

उत्तर

9

आप उपयोग करना चाहिए:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY); 
जैक्सन 1 के लिए

या

config.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 

जैक्सन 2

+0

के लिए मैं जैक्सन उपयोग कर रहा हूँ: 1.8.5, लेकिन ऐसी विकल्प नहीं है: JsonSerialize। Includsion.NON_EMPTY। केवल वही है: हमेशा, NON_NULL, NON_DEFAULT –

+0

एक प्रकार (इंकुडियन के बजाय समावेशन) को ठीक किया गया है, लेकिन इसका उपयोग करने के लिए आपको कम से कम जैक्सन 1.9 की आवश्यकता है, मुझे डर है। – jgm

+0

धन्यवाद, मैंने जैक्सन के संस्करण को अपडेट किया है और अब ठीक है :) –

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