2015-03-13 16 views
21

का उपयोग कर जेसन आउटपुट में दिनांक प्रारूप मैं बाकी एप्लिकेशन बनाने के लिए वसंत बूट पर काम कर रहा हूं। और मैं एक डीटीओ के रूप में नीचे देख सकते हैं:वसंत बूट

public class Subject { 

private String uid; 
private String number; 
private String initials; 
private Date dateOfBirth; 

और मैं वसंत-Hateos का उपयोग करें और मेरी नियंत्रक के reurn प्रकार ResponseEntity है >>। मुझे "yyyy-mm-dd" प्रारूप में प्रदर्शित होने की तारीख चाहिए। और मैं इसमें मारा गया हूँ। कृपया मुझे यह कैसे प्राप्त करने में मदद करें। अग्रिम में धन्यवाद।

उत्तर

22

आपको सबसे अधिक संभावना है कि "yyyy-MM-dd" छोटा उत्तरार्द्ध 'एम' मिनट खंड का संकेत देगा।

आप दो बातें

  • अपने application.properties में spring.jackson.serialization.write-dates-as-timestamps:false जोड़ने इस टाइम स्टाम्प्स के लिए दिनांक परिवर्तित करने को निष्क्रिय कर देगा और इसके बदले एक आईएसओ 8601 अनुरूप प्रारूप का उपयोग

  • आप से व्याख्या द्वारा प्रारूप अनुकूलित कर सकते हैं करना चाहिए dateOfBirth की गेटर विधि @JsonFormat(pattern="yyyy-MM-dd")

+0

हाय, मैं यहाँ एक मुद्दा सामना करना पड़ रहा हो रहा है। जेसन प्रारूप में प्रदर्शित दिनांक 1 दिन कम है। – Pramod

+3

स्प्रिंग बूट 1.3.0 के साथ परीक्षण किया गया है, आपको '' 'spring.jackson.serialization.write-date-as-timestamps''' की आवश्यकता नहीं लगती है, लेकिन यह केवल' '@ JsonFormat''' का उपयोग करने के लिए पर्याप्त है एनोटेशन – ngeek

+4

क्या सभी तिथियों के साथ ऐसा करने का कोई तरीका है, और एक-एक करके टिप्पणी नहीं करना है? – ephemeralCoder

36

यदि आपके पास अपने बीन को जेएसओएन प्रारूप में क्रमबद्ध करने के लिए आपके आवेदन के साथ जैक्सन अभिन्नता है तो आप निर्दिष्ट प्रारूप में दिनांक स्वरूपित करने के लिए जैक्सन एनोटेशन @JsonFormat का उपयोग कर सकते हैं।
यदि आपको yyyy-mm-dd प्रारूप में अपनी तिथि की आवश्यकता है तो आपको अपने क्षेत्र के ऊपर @jsonFormat निर्दिष्ट करने की आवश्यकता है, जिस पर आप इस प्रारूप को लागू करना चाहते हैं।

उदाहरण के लिए:

public class Subject { 

    private String uid; 
    private String number; 
    private String initials; 

    @JsonFormat(pattern="yyyy-MM-dd") 
    private Date dateOfBirth; 

    //Other Code 

} 

डॉक्स से:

एनोटेशन कैसे गुण के मूल्यों धारावाहिक हो रहे हैं के विवरण विन्यस्त करने के लिए प्रयोग किया जाता है।

More Reference Doc

यह आप में मदद मिलेगी कर सकते हैं।

+1

हाय, मुझे यहां एक समस्या का सामना करना पड़ रहा है। जेसन प्रारूप में प्रदर्शित दिनांक 1 दिन कम है। – Pramod

+0

कृपया पोस्ट करें कि आप किस मूल्य को संग्रहीत कर रहे हैं और कैसे? डेटाबेस से या कुछ और –

+0

मैं एक साबुन सेवा से दिनांक पुनर्प्राप्त कर रहा हूं जो XMLGregorian कैलेंडर प्रारूप में है। मैंने इसे java.util.Date में परिवर्तित कर दिया है, और इसे जेसन प्रारूप में परिवर्तित कर दिया गया है। पूर्व के लिए: XMLGregorian कैलेंडर ऑब्जेक्ट को तिथि में परिवर्तित करने के बाद, यह कंसोल में 2014-02-11 प्रदर्शित करता है। लेकिन जेसन आउटपुट में यह 2014-02-10 प्रदर्शित कर रहा है। – Pramod

1

यदि आप सभी तिथियों के लिए प्रारूप बदलना चाहते हैं तो आप एक बिल्डर कस्टमाइज़र जोड़ सकते हैं। यहाँ एक सेम है कि आईएसओ 8601 के लिए तारीखों धर्मान्तरित का एक उदाहरण है:

@Bean 
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { 
    return new Jackson2ObjectMapperBuilderCustomizer() { 
     @Override 
     public void customize(Jackson2ObjectMapperBuilder builder) { 
      builder.dateFormat(new ISO8601DateFormat());   
     }   
    }; 
} 
2

से वसंत बूट संस्करण 1.2.0.RELEASE शुरुआत में, सभी के लिए एक डिफ़ॉल्ट दिनांक स्वरूप सेट करने के लिए एक संपत्ति है कि आप अपने application.properties में जोड़ सकते हैं आपकी कक्षाओं spring.jackson.date-format

अपनी तिथि प्रारूप उदाहरण के लिए, यदि आप अपने गुण को यह लाइन जोड़ना होगा दायर:

spring.jackson.date-format=yyyy-mm-dd 

संदर्भ https://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/html/common-application-properties.html