JSON中的ASP.NET Web API日期格式未成功序列化

bst*_*ack 18 c# serialization json.net asp.net-web-api

所有,

我们正在使用ASP.NET Web API,我们有一个基于REST的服务,其中包含有效负载的JSON.如果我将以下日期作为字符串传递,例如

sampleObj: {
...
myDate: "31/12/2011 00:00:00",
...
}
Run Code Online (Sandbox Code Playgroud)

作为JSON有效内容中的属性值,date属性被反序列化为DateTime.MinValue.字符串格式有效吗?

我们知道格式"2012-10-17 07:45:00"成功序列化,但我们不能保证收到的所有日期都是这种格式.什么是有效的选择?

Mag*_*ing 46

在ASP.NET Web API中,您可以通过JsonFormatter的SerializerSettings添加不同的Json.NET DateTimeConverters,以使您的服务了解不同的DateTime格式.

但是,我认为Json.NET中没有默认的DateTimeConverter采用这种格式"31/12/2011 00:00:00".在这种情况下,您实现自定义DateTimeConverter.

WebApiConfig.cs:

        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new IsoDateTimeConverter());
        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new MyDateTimeConverter());
Run Code Online (Sandbox Code Playgroud)

自定义DateTimeConverter:

public class MyDateTimeConverter : DateTimeConverterBase
{
    //...
}  
Run Code Online (Sandbox Code Playgroud)

有关如何编写自定义DateTimeConverter的更多信息,我在stackoverflow上发现了一些您可能会觉得有用的东西: 如何创建一个json.net Date to String自定义Converter.