Chúng tôi đã gặp sự cố tương tự về dự án hiện tại của tôi. Chúng tôi đang sử dụng API Web (và do đó JSON.Net) để triển khai API REST. Chúng tôi phát hiện ra rằng, khi tuần tự hóa các đối tượng DateTime
, JSON.Net bỏ qua các số không theo sau từ mili giây hoặc bỏ qua mili giây từ ngày hoàn toàn nếu nó bằng 0. Khách hàng của chúng tôi đã mong đợi một chuỗi ngày tháng cố định có độ dài cố định, với chính xác 3 chữ số trong mili giây. Chúng tôi cố định nó bằng cách làm như sau trong Application_Start()
:
JsonSerializerSettings settings = HttpConfiguration.Formatters.JsonFormatter.SerializerSettings;
IsoDateTimeConverter dateConverter = new IsoDateTimeConverter
{
DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'"
};
settings.Converters.Add(dateConverter);
Nếu bạn không sử dụng Web API, bạn có thể làm điều tương tự bằng cách tạo ra một thể hiện mới của JsonSerializerSettings
, thêm IsoDateTimeConverter
đến nó như trình bày ở trên, sau đó chuyển cài đặt bộ nối tiếp đến JsonConvert.SerializeObject()
.
Lưu ý: Nếu bạn đang serializing một DateTimeOffset
hoặc một địa phương DateTime
và bạn muốn bao gồm múi giờ bù đắp, thay thế các trích dẫn 'Z'
trong các định dạng trên với một thể viện chứng K
. Xem Custom Date and Time Format Strings trong tài liệu để biết thêm thông tin.
Nguồn
2013-08-12 20:27:28
có thể là một ý tưởng tốt để giải thích tập hợp các trường hợp dẫn bạn đến việc thực hiện điều này – spender