使用自定义 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"
我需要使用基于 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"