上下文
行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.
因此,要成为有效的 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/