2012-03-06 11 views
10

में जैक्सन सीरियलाइजेशन कॉन्फ़िग। फीचर सेटिंग्स कहां निर्दिष्ट करूं, मैं जैक्सन के डिफ़ॉल्ट समावेशन का उपयोग क्यों कर रहा हूं कि स्प्रिंग ने डिफ़ॉल्ट जैक्सन कॉन्फ़िगरेशन को अनुकूलित किया है।मैं स्प्रिंग 3.1

एक की स्थापना इसके साथ खिलवाड़ है Jackson defaulttrue है, लेकिन वसंत कहीं false को यह बदल गया है और यह भी एक दिनांक स्वरूप प्रदान की WRITE_DATES_AS_TIMESTAMPS है।

दुनिया में यह कहां हो रहा है? मैं चाहता हूं कि मेरी तिथियां संख्याओं के रूप में क्रमबद्ध रहें।

अद्यतन: यह वसंत नहीं है कि यह समस्या पैदा कर रहा है, यह वास्तव में समस्या का कारण प्रॉक्सी कक्षाओं को हाइबरनेट करता है। किसी कारण से यदि हाइबरनेट में type="date" का टाइप-मैपिंग है, तो यह दिनांक स्ट्रिंग के रूप में धारावाहिक होता है, हालांकि यदि इसकी type="timestamp" यह अपेक्षाकृत धारावाहिक है। इस पर ध्यान देने में काफी समय व्यतीत करने के बजाय मैंने अभी अपने सभी मैपिंग्स को टाइमस्टैम्प में बदलने का फैसला किया है।

उत्तर

15

3.1 एम 1 से शुरू करना आप mvc:annotation-driven के उप-तत्व के माध्यम से HttpMessageConverters पंजीकृत करके जैक्सन कस्टम कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं।

देखें Spring 3.1 MVC Namespace Improvements

SPR-7504 यह आसान AnnotationMethodHandlerAdapter

करने के लिए नए संदेश कन्वर्टर्स जोड़ने के लिए सुनिश्चित

उदाहरण देखें:

<bean id="jacksonObjectMapper" class="x.y.z.CustomObjectMapper">     
</bean> 

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
      <property name="objectMapper" ref="jacksonObjectMapper" /> 
     </bean> 
     </mvc:message-converters> 
</mvc:annotation-driven> 

CustomObjectMapper वस्तु

@Component("jacksonObjectMapper") 
    public class CustomObjectMapper extends ObjectMapper { 

     @PostConstruct 
     public void afterPropertiesSet() throws Exception { 

      SerializationConfig serialConfig = getSerializationConfig()  
         .withDateFormat(null); 

        //any other configuration 

      this.setSerializationConfig(serialConfig); 
     } 
    } 

SerializationConfig .withDateFormat

निर्धारित तिथि प्रारूप के साथ उदाहरण के निर्माण के अलावा, सक्षम या Feature.WRITE_DATES_AS_TIMESTAMPS को निष्क्रिय कर देगा (यदि प्रारूप अशक्त के रूप में स्थापित करने के लिए सक्षम; निष्क्रिय न होने पर

+0

ऐसा लगता है कि मैं इसके बाद क्या कर रहा हूं, हालांकि यह मेरे लिए काम नहीं कर रहा है या किसी अन्य कारण से वसंत एक अलग 'मैपिंग जैक्सनहट्पमेसेज कनवर्टर' उदाहरण का चयन कर रहा है जिसमें से मैंने बनाया है। क्या 'MappingJacksonHttpMessageConverter' के सभी उदाहरणों की पहचान करने का कोई तरीका है जिसे बनाया जा सकता है जिसे चुना जा सकता है? –

+0

मैंने पुष्टि की है कि 'CustomObjectMapper' कार्यान्वयन 'this.setSerializationConfig (serialConfig) के बाद फ़ाइल में एक परीक्षण ऑब्जेक्ट लिखकर सही प्रारूप लिख रहा है; और यह ठीक काम कर रहा है, हालांकि यह उदाहरण उपयोग नहीं किया जा रहा है ' 'घोषणा द्वारा। क्या मुझे संभवतः ज्ञात प्रकार के लिए 'आईडी' निर्दिष्ट करने की आवश्यकता है? –

+0

मुझे मेरी समस्या मिली है। यह 'टाइप = "दिनांक"' के हाइबरनेट मैपिंग के उपयोग के लिए आता है, 'टाइप = "टाइमस्टैम्प" में बदलकर समस्या को हल किया गया। –

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