【发布时间】:2018-10-29 09:46:47
【问题描述】:
我想使用 JSON.Net 拒绝传入的 JSON 请求正文,其日期为使用 UTC 时间格式(以消除时区引起的歧义)。我研究了以下选项,目前没有成功:
- 我查看了
JsonSerializerSettings,似乎无法找到有效限制此类请求的选项DateFormatString、DateFormatHandling、DateParseHandling和DateTimeZoneHandling的组合。如果有使用这些选项的解决方案可以拒绝格式错误的传入日期,我会很高兴。 - 我还研究过创建自定义
JsonConverter(使用JsonConverter或DateTimeConverterBase);但是JsonToken类型是Date并且reader.Value已经是DateTime对象,所以我无法验证提供的字符串(或者如果有办法我错过了它)。
我希望有人知道如何在 JSON 日期对象自动转换为 DateTime 对象之前验证它的反序列化,并且可以帮助我。
【问题讨论】:
-
表示你需要找到一种知道日期格式的方法对吗?
-
UTC 不是一种格式...也许您误认为是 ISO8601?无论如何,您可以使用 Json Schema 来验证 json 结构(包括数据类型)。
-
@ershoaib 是的,这就是目的。
-
@ZoharPeled 对不起,我对条款草率了。是的,我的意思是 ISO8601 格式的日期,但它们是以 UTC 时间明确给出的,例如
"2018-10-29T10:41:32Z"将被接受,但 "018-10-29T10:41:32"或"018-10-29T10:41:32+03:00"将被拒绝。
标签: c# json datetime .net-core json.net