从ASP.NET Web API获取可反序列化的DateTime

时间:2017-02-21 11:35:36

标签: c# asp.net json rest datetime

我目前正在使用C#和ASP.NET中的客户端 - 服务器系统,除了其他功能之外,它还来回传递DateTime对象作为DataCOntract的pasrt。

使用ASP.NET Web API项目编写的API端点接受并返回Windows客户端应用程序中的JSON。出于某种原因,客户端应用程序中的DataContractJSONSerializer不接受从服务器中提取的JSON封装的DateTime对象。

服务器输出:

[
 {"title":"My Object", "time":"2017-02-20T12:37:35.53" },
 {"title":"My Second Object", "time":"2017-02-20T12:37:35.53" }
]

但是DataContractJsonSerializer期望DateTime的格式如下:

\/Date(12345789)\/

如何更改其中一个?

2 个答案:

答案 0 :(得分:1)

您是否为序列化器指定了DateTime格式设置?

来自Custom DateTime serialization/deserialization using DataContractJsonSerializer

var serializer = new DataContractJsonSerializer(
   typeof(Client),
   new DataContractJsonSerializerSettings {
       DateTimeFormat = new DateTimeFormat("yyyy-mm-dd hh:MM:ss"),
});

答案 1 :(得分:0)

我终于找到了一种方法来更改Web API的输出以返回自定义格式,并在客户端应用程序中指定它。事实证明,可以在WebApiConfig.cs的Register方法中设置DateFormatString,如下所示:

        config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-mm-dd HH:MM:ss";

后记,应用@ uzr答案中提到的DateTimeFormat可确保所有内容都采用正确的格式。谢谢大家的帮助!