2011-12-26 34 views
21

một ai đó có thể cho tôi xin làm thế nào tôi có thể tạo ra một chuyển đổi tùy chỉnhLàm thế nào để tạo ra một ngày JSON.NET để String tùy chỉnh Chuyển đổi

Tôi biết tôi có thể sử dụng JSON.NET ISODateConvertor, nhưng những gì tôi muốn là cụ thể, tôi chỉ muốn gửi giá trị dưới dạng chuỗi "ngày/tháng/năm" khi trả lời.

+1

câu trả lời L.B. của mang đến cho bạn những gì bạn yêu cầu, nhưng hãy thật cẩn thận về cách bạn sử dụng này. Lý do chúng tôi sử dụng ngày ISO là vì chúng rõ ràng và bất biến văn hóa. Nếu bạn gửi giá trị của mình theo ngày/tháng/năm, hãy nói giá trị như '1/4/2013' - Người nào đó không biết miền địa phương của bạn có thể hiểu là ngày 4 tháng 1 thay vì ngày 1 tháng 4 mà bạn dự định. –

+0

@Matt Johnson, cảm ơn bạn đã trả lời, tôi hoàn toàn đồng ý với bạn 100%. đây là một chủ đề cũ và tôi chỉ sử dụng ISO Date bây giờ và thao tác nó tại khách hàng :) – DevMania

Trả lời

39

Một cái gì đó như thế này?

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

Cảm ơn rất nhiều người đàn ông, nhưng tôi nhận được một lỗi về phương pháp ReadJson không thực hiện – DevMania

+0

Vì bạn nói 'tôi chỉ muốn gửi giá trị như "ngày/tháng/năm" chuỗi trên phản ứng' Tôi chỉ thực hiện 'WriteJson' –

+0

người đàn ông cảm ơn rất nhiều, nó là làm việc nhưng tôi luôn luôn nhận được 01/01/0001 như là kết quả, thậm chí là ví dụ ngày kỷ lục DB của tôi là ví dụ" 2011 -12-27T13: 13: 45.7052459Z " – DevMania

8

Nếu bạn đang sử dụng Web Api thêm định dạng tùy chỉnh để cấu hình sử dụng:

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

rất tuyệt vời cho tôi! Hãy chắc chắn rằng bạn đang thêm bộ chuyển đổi này tại cấu hình chung (WebApiConfig), không phải ở khu vực trợ giúp (HelpPageConfig) –

Các vấn đề liên quan