C# 带有时间戳字符串的Json.NET(Newtonsoft)解析器发生了什么? static void Main(字符串[]args) { 字符串someJsonString=“{\“time\”:\“2021-02-24T13:15:43Z\”; JObject-someJsonObject=JObject.Parse(someJsonString); string time=someJsonObject.GetValue(“time”).Value(); 控制台写入线(时间); Console.ReadLine(); }

C# 带有时间戳字符串的Json.NET(Newtonsoft)解析器发生了什么? static void Main(字符串[]args) { 字符串someJsonString=“{\“time\”:\“2021-02-24T13:15:43Z\”; JObject-someJsonObject=JObject.Parse(someJsonString); string time=someJsonObject.GetValue(“time”).Value(); 控制台写入线(时间); Console.ReadLine(); },c#,json,.net,json.net,C#,Json,.net,Json.net,[使用Newtonsoft.Json版本12.0.3] 为什么打印的结果是02/24/2021 13:15:43当它应该是2021-02-24T13:15:43Z时,我只需要作为字符串的值。。。发生了什么?JSON.Net将自动将日期格式的字符串解析为DateTime对象。如果要防止出现这种情况,则需要使用具体类: static void Main(string[] args) { string someJsonString = "{\"time\": \&

[使用Newtonsoft.Json版本12.0.3]


为什么打印的结果是02/24/2021 13:15:43当它应该是2021-02-24T13:15:43Z时,我只需要作为字符串的值。。。发生了什么?

JSON.Net将自动将日期格式的字符串解析为
DateTime
对象。如果要防止出现这种情况,则需要使用具体类:

static void Main(string[] args)
{
    string someJsonString = "{\"time\": \"2021-02-24T13:15:43Z\"}";
    JObject someJsonObject = JObject.Parse(someJsonString);          
    string time = someJsonObject.GetValue("time").Value<string>();
    Console.WriteLine(time);
    Console.ReadLine();
}
然后像这样反序列化:

public class Foo
{
    public string Time { get; set; }
}
看起来像是一个复制品,同意吗?
var f = JsonConvert.DeserializeObject<Foo>(someJsonString);
using var stringReader = new StringReader(someJsonString);
using var reader = new JsonTextReader(stringReader);
reader.DateParseHandling = DateParseHandling.None;
JObject someJsonObject = JObject.Load(reader);