Json 日期被序列化为错误的格式

标签 json serialization asp.net-core asp.net-core-mvc datetime-format

我有一个 Web Api ASP.net CORE 1 MVC,c#。我通过我构建的使用 Angular(版本 1)编写的客户端应用程序调用 Web API。

我有一个 POST 方法,该方法有一个带有日期作为属性的模型。

在我的开发环境中,当我发布到该方法时,日期显示正常,模型有效,并且日期采用我期望的格式“dd/MM/yyyy”。但是,当我将代码移至测试服务器时,日期将显示为“MM/dd/yyyy”。事实上,在测试服务器上,日期是这样的代码“0001-01-01T00:00:00”。

通过记录网络流量,我可以看到从客户端应用程序发送的日期是正确的。然而,当它到达该方法时,它已被 .net 序列化为错误的格式,并且模型状态无效。

以前有人遇到过这个问题吗?它太新了,目前很难获得有关 CORE 1 的良好文档。

我已经在我的startup.cs中为我的网络API尝试了这段代码:

   services.AddMvc().AddJsonOptions(opt =>
   {
      opt.SerializerSettings.DateFormatString = "dd/MM/yyyy";
   });

但这并没有帮助。

最佳答案

通常为了避免跨本地化的日期序列化产生混淆,建议以明确的格式进行序列化。在这种情况下,最好将日期格式化为国际化 ISO 格式:

“年-月-日”,

参见:http://www.iso.org/iso/home/standards/iso8601.htm

关于Json 日期被序列化为错误的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39014523/

相关文章:

c# - RestSharp Deserialize List<object> 返回 Could not cast or convert from System.String to

java - 从End到Start解析json

javascript - 使用C#将函数序列化为json中的参数

javascript - knockout 映射 c# 模型到 knockout 模型,将 C# 代码解析为 json 不起作用

c# - 在 ASP.NET 5 中使用通用 OAuth 中间件时出现 401 未经授权

c# - 根据 JSON Schema C# 验证 JSON

java - JSON 的 Java 正则表达式无效

Ruby PStore 与 Postgres

C#:将自定义集合转储到 csv 文件的最简单方法

asp.net-core - kestrel 中自托管的信号器中的最大并发请求数