我目前正在使用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)\/
如何更改其中一个?
答案 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可确保所有内容都采用正确的格式。谢谢大家的帮助!