c# - 如何处理非标准 Json 日期

标签 c# json sql-server

我们有一个由客户端填充的 SQL 数据表,以便稍后由后台服务进行处理。这在大多数情况下都有效,但似乎某些客户端子集向我们发送了意外的日期格式,这导致 JSON 解析错误。我们期待以下格式的日期:

2018-01-20T13:42:43.1040000Z

但我们从这些客户那里得到的是:

2018-01-20T3:42:43.1040000 p. m.Z

一等奖是找到一个标准的 JSON 解析器或格式字符串,它知道如何正确转换这些日期字符串。二等奖是为 SQL 编写一个更新脚本,将这些字符串转换为可用的内容。否则,我们将编写脚本将这些日期解析为字符串,然后对它们进行处理直到它们有效,这很糟糕。

有人知道任何标准解析器,或者可以建议一个能够正确解释这些奇怪的日期字符串的日期格式字符串吗?

最佳答案

您可以设置JsonSerializerSettings对象的DateFormatString来自定义日期格式。但是,由于您还有一个特殊的 AM/PM 指示符,因此您还需要设置文化。您可以创建自己的,但为了这些目的,我们可以从加泰罗尼亚文化中窃取,因为这似乎很匹配。鉴于此,我们可以使用这样的格式字符串(请参阅 here 以了解每个部分的含义):

yyyy-MM-dd'T'h:m:s.fffffff tt'Z'

例如,这应该可行。

var catalan = System.Globalization.CultureInfo.CreateSpecificCulture("ca-FR");

JsonSerializerSettings settings = new JsonSerializerSettings
{
    DateFormatString = "yyyy-MM-dd'T'h:m:s.fffffff tt'Z'",
    Culture = catalan
};

var result = JsonConvert.DeserializeObject<YourObject>(json, settings);

关于c# - 如何处理非标准 Json 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48366837/

相关文章:

c# - Reference.svcmap : Could not load file or assembly 'xxx' after . NET 4.5.1更新

java - JAVA中解析结构总是变化的JSON组件

javascript json 数据脚本无法工作

php - 如何构造一个sql查询来获取用户之间共同好友的数量?

sql - DBCC DBREINDEX ('?' 、 ' ' 、 80) 是做什么的?

c# - 如何获得直到秒的日期和时间?

c# - 如何设置 NLog 最大文件大小?

c# - Regex.Match、startat 和 ^(字符串开始)

javascript - 通用 JSON 对象

sql - 业务规则使用检查约束好不好