2013-07-05 12 views
8

के लिए एक मॉड्यूल के साथ ऑब्जेक्ट मैपर कैसे स्थापित करूं? इस उत्तर से (https://stackoverflow.com/a/15605404/650784) मैं अपने डीटीओ में जोडा डेटाटाइम को संभालने के लिए जैक्सन सेट अप करने की कोशिश कर रहा हूं, लेकिन मुझे यह समझने में कठिनाई हो रही है कि ऑब्जेक्टमैपर कोड कहां होना चाहिए जीना। मैंने ऑब्जेक्टमैपर पर विभिन्न लेखों का एक समूह पढ़ा है, लेकिन वे सभी पुराने संस्करणों से निपटने लगते हैं। मैं जो कुछ भी पाता हूं उसे ले सकता हूं और इसे काम करने के लिए हैक कर सकता हूं, लेकिन मैं देखना चाहता था कि स्प्रिंग 3.2.2/जैक्सन 2/जर्सी के साथ ऐसा करने का सही तरीका क्या था। मुझे यह इंगित करना चाहिए कि मैं सिर्फ जोडा टाइम मैपिंग मॉड्यूल जोड़ना चाहता हूं, मैं जैक्सन के किसी अन्य अनुकूलन को नहीं चाहता हूं। मैं एक वसंत नौसिखिया का थोड़ा सा हूँ, इसलिए मुझे माफ़ कर दो अगर यह कुछ सरल और स्पष्ट उत्तर है तो मुझे अभी याद आया।मैं जैक्सन और स्प्रिंग

उत्तर

6

मैंने वसंत का कभी भी उपयोग नहीं किया, लेकिन मुझे रीस्टेसी फ्रेमवर्क का उपयोग करके एक ही समस्या थी। यह जानकर, मैं आपको खोजने के लिए कुछ जवाब/दिशा देने की कोशिश करूंगा।

अपने किसी एक प्रश्न का उत्तर देने के लिए, जब भी आपको जेसन प्रक्रिया में/सेरियलाइजेशन/deserialization से निपटने के लिए ऑब्जेक्टमैपर "जीना है"। उदाहरण के लिए:

MyObject myObject = new MyObject(); 
ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(myObject); 

के रूप में लिंक आपके द्वारा दी गई में बताया, तो आप अपने ObjectMapper करने के लिए एक मॉड्यूल जोड़ना चाहते हैं, तो आप अपने नक्शाकार बनाने के बाद निम्न पंक्ति जोड़ने के लिए:

mapper.registerModule(new AnyModuleYouNeed()); 

अब , मैं एक स्प्रिंग उपयोगकर्ता नहीं हूं, लेकिन मुझे लगता है कि वसंत जब आप अपनी सीरियलाइजेशन/deserialization प्रक्रिया प्रदान करते हैं तो यह प्रक्रिया स्वचालित होनी चाहिए।

मैं वेब पर इस पाया: http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html

आपके मामले में, मुझे लगता है कि केवल बिंदु 2 और बिंदु 3 आप के लिए उपयोगी हैं, और क्योंकि आप एक कस्टम serializer है की जरूरत नहीं है, लेकिन आप केवल जरूरत है अपने नक्शाकार करने के लिए एक मॉड्यूल को जोड़ने के लिए, मुझे लगता है कि कस्टम ObjectMapper कि तरह दिखना चाहिए:

@Component 
public class CustomObjectMapper extends ObjectMapper { 
    public CustomObjectMapper() { 
     registerModule(new AnyModuleYouNeed()); 
    } 
} 

वेब साइट मैं तुम्हें की ओर इशारा किया, वे वसंत 3.1 उपयोगकर्ताओं के लिए एक Cusom ObjectMapper रजिस्टर करने के लिए एक सुरुचिपूर्ण तरीके के बारे में बात alson : http://magicmonster.com/kb/prg/java/spring/webmvc/mvc_spring_config_namespace.html

यह उपयोगी हो सकता है।

अंत में, मेरी खराब अंग्रेजी क्षमा करें, और अगर आपको आपकी समस्या हल हो गई तो मुझे बताएं।

+0

बहुत बहुत धन्यवाद, आपने मुझे बहुत समय बचाया। विशेष रूप से दूसरे लिंक के लिए। लेकिन जैक्सन 2 के लिए मैपिंग जैक्सन 2HttpMessageConverter होना चाहिए। – Roman

+0

मेरे पास एक ही प्रश्न कम या कम है लेकिन अभी भी अस्पष्ट नहीं है। क्या मेरा सर्वर शुरू होने पर मॉड्यूल पंजीकृत है? या प्रति अनुरोध? यदि मेरा सीरियलाइजेशन कोड POJO में @XmlElement प्रविष्टियों का केवल एक गुच्छा है, तो क्या इसका मतलब है कि मुझे एक मैपर बनाना है और इसे प्रत्येक pojo में उपयोग करना है जहां मुझे JSONObject समर्थन की आवश्यकता है? मैं वसंत बीटीडब्ल्यू का उपयोग नहीं कर रहा हूँ – Amalgovinus

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