2014-09-03 6 views
5

में मैं नीचे कोड है असमर्थ myDTO.getDateOfBirth());requestBody द्वारा दिनांक को स्ट्रिंग परिवर्तित करने के लिए वसंत

} 

JSON अनुरोध:

{ 
"dateOfBirth":"2014-09-04", 

} 

अगर मैं करने के लिए तिथि वस्तु होता है yyyy-mm-dd स्वत: परिवर्तन के रूप में अनुरोध भेजें। नियंत्रक में उत्पादन: - dateOfBirth = गुरु सितं, 04 05:30:00 IST 2014

लेकिन जब मैं dd-mm-yyyy प्रारूप में DateofBirth भेजने यह तिथि automatically.So कैसे स्ट्रिंग परिवर्तित नहीं करता मैं इस मामले को संभाल सकता हूं।

JSON अनुरोध:

{ 
"dateOfBirth":"04-09-2014", 

} 

आउटपुट: कंसोल में कोई आउटपुट भी नियंत्रक तक पहुँच जाता है नहीं है।

मैंने @DateTimeFormat के साथ प्रयास किया है लेकिन यह काम नहीं कर रहा है।

मैं वसंत 4.02 का उपयोग कर रहा हूं कृपया सुझाव दें कि हम कोई एनोटेशन का उपयोग कर सकते हैं।

+0

इस पोस्ट पर एक नजर है: http://stackoverflow.com/questions/21505997/passing-a-date-as-json-with-spring-mvc-and-jackson – user3487063

उत्तर

10

@DateTimeFormat फॉर्म बैकिंग (कमांड) ऑब्जेक्ट्स के लिए है। स्प्रिंग के MappingJackson2HttpMessageConverter (जैक्सन का नवीनतम संस्करण मानते हुए) में आपका JSON संसाधित (डिफ़ॉल्ट रूप से) जैक्सन के ObjectMapper द्वारा संसाधित किया जाता है। यह ObjectMapper में कई डिफ़ॉल्ट दिनांक प्रारूप हैं जो इसे संभाल सकते हैं। ऐसा लगता है कि yyyy-mm-dd उनमें से एक है, लेकिन dd-mm-yyyy नहीं है।

आपको ObjectMapper के साथ अपना खुद का दिनांक प्रारूप पंजीकृत करना होगा और को MappingJackson2HttpMessageConverter के साथ पंजीकृत करें। यहाँ ऐसा करने के लिए विभिन्न तरीके हैं:

वैकल्पिक रूप से, आप या तो अपने पूरी कक्षा या उसके क्षेत्रों में से एक (तारीख) पर एक JsonDeserializer उपयोग कर सकते हैं।नीचे

1

सूची लिंक में उदाहरण setter तरीकों पर JsonDeserializer

public class CustomJsonDateDeserializer extends JsonDeserializer<Date> { 
    @Override 
    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     String date = jsonParser.getText(); 
     try { 
      return format.parse(date); 
     } catch (ParseException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

उपयोग @JsonDeserialize(using = CustomJsonDateDeserializer.class) एनोटेशन विस्तार करने के लिए एक वर्ग itemCreate।

धन्यवाद @Varun Achar जवाब है, url

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