簡體   English   中英

從ASP.NET Web API獲取可反序列化的DateTime

[英]Get deserializable DateTime from ASP.NET Web API

我目前正在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)\/

如何更改一個或另一個?

您是否為序列化程序指定了DateTime格式設置?

使用DataContractJsonSerializer自定義DateTime序列化/反序列化

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

我終於找到了一種更改Web API輸出以返回自定義格式的方法,並在客戶端應用程序中也對此進行了指定。 事實證明,可以在WebApiConfig.cs的Register方法中設置DateFormatString,如下所示:

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

后記,應用@uzr的答案中提到的DateTimeFormat可以確保所有內容都采用正確的格式。 謝謝大家的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM