【发布时间】:2017-08-06 06:56:39
【问题描述】:
我有一个 Web API 应用程序,可将 JSON 返回给可能未使用 Microsoft 技术的消费者。当我的控制器以 JSON 形式返回具有 DateTime 属性的对象时,它会以这种格式序列化日期:
2017-03-15T00:00:00-04:00
这让消费者有点头疼,因为他们希望它采用 ISO 8601 格式。一些研究告诉我 JSON.NET 现在默认使用 ISO 8601(我使用的是 9.0.1)。当我运行这段代码时......
Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now));
...我明白了:
2017-03-15T09:10:13.8105498-04:00
在表达完整日期和时间时,维基百科将这些显示为有效的 ISO 8601 格式:
2017-03-15T11:45:42+00:00
2017-03-15T11:45:42Z
20170315T114542Z
但是,我上面得到的输出与其中任何一个都不完全匹配。我希望格式化程序使用2017-03-15T11:45:42Z。
并且可能完全值得另一个问题,在我的 Web API 配置中添加以下行似乎被忽略了,因为它继续在上面最初显示的日期返回 JSON:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
我假设一旦我弄清楚了核心问题,Web API 问题也可能会得到解决。
【问题讨论】:
-
我希望我能多次投票。更多人应该关注采用 ISO 8601 格式的 JSON 日期。
标签: json asp.net-web-api json.net iso8601