使用自定义 jsonConverter 在 c# 中处理来自消耗打开 api 的无效日期字符串格式

Handling invalid date string format from consumed open api in c# with a custom jsonConverter

我需要使用基于 swaggerhub 上的 swagger 定义的 api,该定义将字段指定为 LastPriceChange string($date),它在 c# 中生成的模型中成为 DateTime。

问题是他们提供的数据格式无效:

"LastPriceChange": "2020-11-23 16:15:57Z",

因为缺少指定时间部分的 T,所以在重新序列化字符串时会抛出以下错误:

字符串“2020-11-23 16:15:57Z”未被识别为有效的日期时间。

我已经有一个自定义 json 转换器,我必须为它们 return null 的整数字段编写,但这似乎更难编写。有没有一种好方法可以通过数据合同或其他方式识别该字段应该是json转换器中的日期?

如果没有,是否有另一种方法将此字段映射到 DateTime?

在序列化程序设置中,我尝试使用以下值:

 DateParseHandling = DateParseHandling.DateTimeOffset,
        DateFormatHandling = DateFormatHandling.IsoDateFormat,
        DateFormatString = "YYYY-MM-DD HH:mm:ssZ",

还有其他方法可以解决这个问题吗?

谢谢

保罗

感谢 Brian 的有用评论,这是因为我将日期格式字符串设置错误以尝试解决它:

DateFormatString = "YYYY-MM-DD HH:mm:ssZ", 

这实际上应该是

DateFormatString = "yyyy-MM-dd HH:mm:ssZ"