2011-04-17 20 views
6

मैं एक आदेश कक्षा में एक Joda दिनांक समय है:जैक्सन JSON Joda दिनांक समय serializing नहीं सही ढंग से

public class Order { 
    private DateTime creationTime; 
    ... 
} 

मैं अपने नक्शाकार प्रारंभ की है इस प्रकार है:

mapper.configure(
     SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 

जब मैं इस वर्ग को क्रमानुसार, मैं उम्मीद सृजन देखने के लिए आईएसओ -8601 प्रारूप में क्रमशः

{ 
    "creationTime" : "2011-01-01T09:00:00.000-04:00" 
} 

यह पूरी तरह से ठीक काम कर रहा है मेरे यूनिट परीक्षण में।

{ 
    "creationTime" : { 
    "year" : 2011, 
    "dayOfMonth" : 17, 
    "dayOfWeek" : 7, 
    "era" : 1, 
    "dayOfYear" : 107, 
    "weekOfWeekyear" : 15, 
    "weekyear" : 2011, 
    "monthOfYear" : 4, 
    "yearOfEra" : 2011, 
    "yearOfCentury" : 11, 
    "centuryOfEra" : 20, 
    "millisOfSecond" : 590, 
    "millisOfDay" : 40311590, 
    "secondOfMinute" : 51, 
    "secondOfDay" : 40311, 
    "minuteOfHour" : 11, 
    "minuteOfDay" : 671, 
    "hourOfDay" : 11, 
    "millis" : 1303053111590, 
    "zone" : { 
     "fixed" : false, 
     "uncachedZone" : { 
     "cachable" : true, 
     "fixed" : false, 
     "id" : "America/New_York" 
     }, 
     "id" : "America/New_York" 
    }, 
    "chronology" : { 
     "zone" : { 
     "fixed" : false, 
     "uncachedZone" : { 
      "cachable" : true, 
      "fixed" : false, 
      "id" : "America/New_York" 
     }, 
     "id" : "America/New_York" 
     } 
    } 
} 

मैं क्या याद आ रही है: लेकिन, मेरा वेब एप्लिकेशन में, ठीक उसी कोड सभी दिनांक समय क्षेत्रों serializing कर रहा है? मैं दोनों मामलों में अपने क्लासपाथ में जैक्सन-कोर-एएसएल-1.7.6.jar और जैक्सन-मैपर-एएसएल-1.7.6.jar समेत हूं।

कुछ ऑनलाइन उदाहरणों में मैंने डेटटाइम पर एक एनोटेशन देखा। मुझे नहीं पता कि यह जरूरी है, लेकिन मैंने इसे nevertheness की कोशिश की। नीचे देखें:

public class Order { 
    @JsonSerialize(using=DateTimeSerializer.class) 
    private DateTime creationTime; 
    ... 
} 

ऐसा कोई फर्क नहीं पड़ता।

धन्यवाद।

पीएस क्या किसी को पता है कि जैक्सन मेलिंग सूची काम कर रही है या नहीं? मैंने इस प्रश्न को उपयोगकर्ता मेलिंग सूची पर पोस्ट किया है, लेकिन यह अभिलेखागार में नहीं दिखाया गया है। अभिलेखागार में पिछले पोस्ट 24 दिनांकित है जून 2010

+0

मेलिंग सूची काम कर रही है, लेकिन किसी कारण से कोडहॉस अभिलेखागार काम नहीं करते हैं। – StaxMan

+0

धन्यवाद। मुझे बहुत सारी प्रतिक्रियाएं मिलीं और मेलिंग सूची में मदद मिली। – Naresh

+3

तो, समाधान क्या है? –

उत्तर

3

यह मेरे लिए चाल करने के लिए लग रहा था: How to serialize Joda DateTime with Jackson JSON processer?

असल में, विचार एक वर्ग है कि एक overried serialize विधि के साथ org.codehaus.jackson.map.JsonSerializer फैली बनाने के लिए किया गया था:

public void serialize(DateTime value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException { 
    gen.writeString(formatter.print(value)); 
} 

फिर DateTimeSerializer के स्थान पर उस कस्टम धारावाहिक का उपयोग करें।

+1

अब एक जैक्सन-डाटाटाइप-जोडा मॉड्यूल है - मैंने यहां कुछ उदाहरण कॉन्फ़िगरेशन पोस्ट किया है: http://stackoverflow.com/a/ 14185077/125246 – paulcm

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