gpt4 book ai didi

asp.net-mvc - JSON 响应模型中的时间?

转载 作者:行者123 更新时间:2023-12-05 06:45:43 25 4
gpt4 key购买 nike

我正在使用 ASP.NET Web Api 2 和 Json.NET 6.0.1。

根据 ISO 8601 , 日期应该以某种方式互换。我正在使用 IsoDateTimeConverter() 来实现这一点:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());

但是应该如何在 JSON 响应模型中返回“一天中的时间”?

我在 ISO 规范中找不到这方面的任何内容。

时间是否应该返回为:

  • 时间跨度? (期望用户不要将其用作持续时间表示)
  • 日期时间? (期望用户放弃日期部分)
  • 自定义时间

最佳答案

JSON 中没有用于包含日期或时间的标准结构(参见 JSON.org )。正如您提到的,日期时间值的实际标准是使用 ISO 8601 格式的字符串。但由于没有官方标准,因此真正归结为最适合您和 API 使用者的标准。

使用 DateTime 对象是一个合理的选择,因为 Json.Net 和其他序列化程序中已经支持将这些字符串与 ISO 8601 字符串相互转换。所以这将是最容易实现的。但是,正如您所说,您的 API 用户必须知道忽略日期部分。您可以将日期设置为 0001-01-01 以强调它的无关紧要。这与您只需要 API 中的日期而时间无关紧要的更常见情况并无太大不同。在这种情况下,大多数人只是将时间设置为午夜,然后放手。但是,我同意这种方法似乎确实有点“代码味道”,因为这部分值(value)只是噪音。

也许更简洁的想法是将您的 DateTime 值格式化为 ISO 8601,但在返回之前切掉日期部分。因此,API 的用户会得到一个类似于 14:35:28.906Z 的字符串。您可以编写一个简单的 JsonConverter 来在序列化期间为您处理这个问题。这将在某种程度上为您提供两全其美的体验——一个更简洁的 API,但您仍然可以在内部使用熟悉的 DateTime 结构。

自定义 Time 类也可以在这里工作,但可能会过大,具体取决于。如果您确实需要去那里,您可能需要查看第三方库,例如 Noda Time ,它已经为这类事物构建了类,并且还为 Json.Net 预构建了转换器。

我绝对不会为此目的选择 TimeSpan。错误的工作工具。

关于asp.net-mvc - JSON 响应模型中的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com