c# - 使用 JsonConvert 反序列化单个 DateTime 对象

标签 c# json datetime json.net

上下文

JsonConvert.SerializeObject(DateTime.Now)给出以下结果:

"2018-05-25T07:59:27.2175427+02:00"

但是,当我尝试使用以下行将此 JSON 字符串反序列化为 DateTime 时:JsonConvert.DeserializeObject<DateTime>("2018-05-25T07:59:27.2175427+02:00")

它给出一个 Newtonsoft.Json.JsonReaderException带有以下消息:

Unexpected character encountered while parsing value: 2. Path '', line 1, position 1.

到目前为止我还尝试过什么

"2018-05-25T07:59:27"

导致同样的异常

问题

具有 JSON 序列化格式的日期时间字符串,我想要一个 DateTime变量和其中的正确值。我怎样才能完成这个任务?

最佳答案

JSON standard所示,必须引用 JSON 字符串文字:

A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.

enter image description here

因此,要成为有效的 JSON,您的 C# 字符串文字必须包含周围的双引号,如下所示:

var dateTime = JsonConvert.DeserializeObject<DateTime>("\"2018-05-25T07:59:27.2175427+02:00\"");

最外层的引号很容易混淆,它们是 c# 语言的一部分,在你的 c# 代码中分隔字符串,但不包含在字符串本身中,而内引号是字符串文字本身的一部分。

fiddle 示例 here .

关于c# - 使用 JsonConvert 反序列化单个 DateTime 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522636/

相关文章:

json - 使用 ARM 模板创建 NIC 时如何引用另一个虚拟网络/资源组的子网

java - 将 Java.Util.Date 转换为 Java.Sql.Date 时出错

java - mssql 2005 日期时间和 jdbc

c# - 删除条件格式

c# - MVVM Light RaisePropertyChanged

c# - 正则表达式替换 : Match hypen not preceded by slash

json - Grails在查询中复制JSON

c# - 文件重命名问题?

javascript - 如何将 JSON 对象合并为 1 个 JSON 对象

C# DateTime 时区减去问题