您无法获取原始字符串,无法识别日期字符串并将其转换为自身
DateTime内部的结构
JsonReader。如果您这样做,则可以看到以下内容:
Console.WriteLine(((JValue)data["SimpleDate"]).Value.GetType()); // Prints System.DateTime
但是,您可以通过执行以下操作以ISO 8601格式提取日期:
var value = JsonConvert.SerializeObject(data["SimpleDate"]);// value is "2012-05-18T00:00:00Z"
这将始终输出
JValueJSON合适的字符串格式。由于您的原始日期采用这种格式,因此可以满足您的需求。
(老实说,
JValue.ToString()鉴于
JObject.ToString()输出确实包含ISO格式的日期,我很惊讶以非ISO格式输出日期。)
如果您能够在阅读时更改设置,则
JObject可以使用
JsonSerializerSettings.DateParseHandling =DateParseHandling.None:
var settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None }; var data = JsonConvert.DeserializeObject<JObject>(@"{ ""SimpleDate"":""2012-05-18T00:00:00Z"", ""PatternDate"":""2012-11-07T00:00:00Z"" }", settings); var value = data["SimpleDate"].Value<string>(); Debug.WriteLine(value); // Outputs 2012-05-18T00:00:00Z有没有超载
JObject.Parse(),需要一个
JsonSerializerSettings,所以你需要使用
DeserializeObject。此设置最终传播到
JsonReader.DateParseHandling。



