में शून्य वस्तुओं को हटाने के लिए कॉन्फ़िगर कैसे करें मेरे पास एक वसंत webservice है जो एक जेसन प्रतिक्रिया देता है। http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/वसंत आरईएसटी सेवा: जेसन प्रतिक्रिया
प्रारूप json में दिया जाता है है:: मैं सेवा बनाने के लिए उदाहरण यहां दिए गए का उपयोग कर रहा { "नाम": अशक्त, "staffName": [ "KFC-कंपर", "स्मिथ" ]}
मैं वापस आ प्रतिक्रिया से किसी भी अशक्त वस्तुओं को हटाने के लिए चाहते हैं तो यह इस तरह दिखता है: { "staffName": [ "KFC-कंपर", "स्मिथ"]}
मैं इसी तरह मिल गया है यहां पूछे गए प्रश्न लेकिन मैं समाधान समाधान करने में सक्षम हूं उदाहरण के लिए
Configuring ObjectMapper in Spring
configuring the jacksonObjectMapper not working in spring mvc 3
how to configure spring mvc 3 to not return "null" object in json response?
Spring configure @ResponseBody JSON format
Jackson+Spring3.0.5 custom object mapper
इन और अन्य स्रोतों के माध्यम से पढ़ने से, मैंने स्प्रिंग 3.1 और संदेश-कन्वर्टर्स का उपयोग करने के लिए जो चाहता था उसे हासिल करने का सबसे साफ तरीका पाया जिसे एमवीसी-एनोटेशन के भीतर कॉन्फ़िगर किया जा सकता है। मेरे अद्यतन वसंत कॉन्फ़िग फ़ाइल है:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:component-scan base-package="com.mkyong.common.controller" />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="prefixJson" value="true" />
<property name="supportedMediaTypes" value="application/json" />
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<property name="serializationInclusion" value="NON_NULL"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
सेवा वर्ग, mkyong.com साइट पर दिए गए के रूप में ही है, सिवाय इसके कि मैं दुकान नाम चर की टिप्पणी की है, तो यह
यानी अशक्त है@Controller
@RequestMapping("/kfc/brands")
public class JSONController {
@RequestMapping(value="{name}", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
Shop shop = new Shop();
//shop.setName(name);
shop.setStaffName(new String[]{name, "cronin"});
return shop;
}
}
जैक्सन जार जो मैं उपयोग कर रहा हूं वे जैक्सन-मैपर-एएसएल 1.9.0 और जैक्सन-कोर-एएसएल 1.9.0 हैं। ये एकमात्र नए जार हैं जिन्हें मैंने पोम में जोड़ा है जैसा कि मैंने वसंत-जेसन परियोजना के हिस्से के रूप में प्रदान किया है जिसे मैंने mkyong.com से डाउनलोड किया था।
परियोजना को सफलतापूर्वक बनाता है, लेकिन जब मैं ब्राउज़र के माध्यम से सेवा शुरू मैं अभी भी एक ही बात मिलता है यानी { "नाम": अशक्त, "staffName": [ "KFC-कंपर", "स्मिथ"]}
क्या कोई मुझे बता सकता है कि मैं अपनी कॉन्फ़िगरेशन के साथ गलत कहां जा रहा हूं?
मैंने कई अन्य विकल्पों की कोशिश की है, लेकिन एकमात्र तरीका है कि मैं सही प्रारूप में जेसन को वापस करने में सक्षम हूं, जेएसओएन नियंत्रक को ऑब्जेक्ट मैपर जोड़ना है और "getShopInJSON" विधि एक स्ट्रिंग यानी
public @ResponseBody String getShopInJSON(@PathVariable String name) throws JsonGenerationException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
Shop shop = new Shop();
//shop.setName(name);
shop.setStaffName(new String[]{name, "cronin"});
String test = mapper.writeValueAsString(shop);
return test;
}
अब अगर मैं सेवा मैं यानी की उम्मीद करने के आह्वान { "staffName": [ "KFC-कंपर", "क्रोनिन"]}
मैं भी प्राप्त कर लिया है यह काम करने के लिए @JsonIgnore एनोटेशन का उपयोग करके, लेकिन यह समाधान मेरे लिए उपयुक्त नहीं है।
मुझे समझ में नहीं आता कि यह कोड में क्यों काम कर रहा है लेकिन कॉन्फ़िगरेशन में नहीं, इसलिए कोई भी मदद शानदार होगी।
मुझे यह वसंत लग रहा था नक्शाकार उद्देश्य यह है कि contex फाइल में परिभाषित का उपयोग नहीं कर रहा है के लिए, मैं डिबग वसंत के साथ की जाँच xml – Elbek
हां में परिभाषित मैपर ऑब्जेक्ट के लिए 'setSerializationInclusion() 'विधि को कॉल कर रहा है, इस तरह मैं इसे समझता हूं। ऑब्जेक्ट मैपर सही ढंग से कॉन्फ़िगर किया गया प्रतीत होता है, यह बस वसंत कंटेनर में उपयोग नहीं किया जा रहा है। – mikec