2011-12-26 17 views
21

कोई मुझे बता सकते हैं कि कैसे मैं एक कस्टम कनवर्टरकैसे स्ट्रिंग कस्टम कनवर्टर करने के लिए एक JSON.NET दिनांक

मैं जानता हूँ कि मैं JSON.NET ISODateConvertor उपयोग कर सकते हैं बना सकते हैं कृपया बनाने के लिए है, लेकिन क्या मैं चाहता हूँ विशिष्ट है, मैं तो बस प्रतिक्रिया पर "दिन/महीना/वर्ष" स्ट्रिंग के रूप में मूल्य भेजना चाहते हैं।

+1

L.B. का जवाब आप देता है आप के लिए क्या कहा, लेकिन कृपया आप यह कैसे उपयोग करने के बारे में बहुत सावधान रहना होगा। आईएसओ तिथियों का उपयोग करने का कारण यह है कि वे स्पष्ट और संस्कृति परिवर्तक हैं। यदि आप अपना मूल्य दिन/माह/वर्ष के रूप में भेजते हैं, तो '1/4/2013' जैसे मूल्य कहें - किसी को आपके लोकेल के बारे में पता नहीं है, जो कि 4 अप्रैल के रूप में आपके द्वारा इरादा गया था, की बजाय 4 जनवरी के रूप में व्याख्या कर सकता है। –

+0

@ मैट जॉनसन, उत्तर के लिए धन्यवाद, मैं पूरी तरह से 100% से सहमत हूं। यह एक पुराना धागा है और मैं केवल आईएसओ तिथि का उपयोग करता हूं और इसे क्लाइंट पर कुशलतापूर्वक उपयोग करता हूं :) – DevMania

उत्तर

39

ऐसा कुछ?

string str = JsonConvert.SerializeObject(new DateTimeClass(), new MyDateTimeConvertor()); 

public class DateTimeClass 
{ 
    public DateTime dt; 
    public int dummy = 0; 
} 

public class MyDateTimeConvertor : DateTimeConverterBase 
{ 
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     return DateTime.Parse(reader.Value.ToString()); 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy")); 
    } 
} 
+0

धन्यवाद बहुत बहुत धन्यवाद, लेकिन मुझे रीडजेसन विधि को – DevMania

+0

लागू करने के बारे में कोई त्रुटि नहीं मिली है क्योंकि आपने कहा था कि 'मैं सिर्फ मान भेजना चाहता हूं प्रतिक्रिया पर "दिन/महीना/वर्ष" स्ट्रिंग 'मैंने केवल' WriteJson' –

+0

मैन को बहुत धन्यवाद दिया है, यह काम कर रहा है, लेकिन मुझे हमेशा 01/01/0001 परिणाम मिलते हैं, उदाहरण के लिए कि मेरी डीबी रिकॉर्ड तिथि उदाहरण के लिए है "2011 -12-27T13: 13: 45.7052459Z " – DevMania

8

आप वेब एपीआई विन्यास का उपयोग कर के लिए कस्टम फ़ॉर्मेटर जोड़ने उपयोग कर रहे हैं:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new MyDateTimeConvertor()) 
+0

मेरे लिए बहुत अच्छा बनाता है! सुनिश्चित करें कि आप इस कनवर्टर को वैश्विक कॉन्फ़िगरेशन (WebApiConfig) पर जोड़ रहे हैं, सहायता क्षेत्र पर नहीं (HelpPageConfig) –

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