JToken:获取原始/原始JSON值
有没有办法从获取原始/原始JSON值JToken
?
问题:
var data = JObject.Parse(@"{ ""SimpleDate"":""2012-05-18T00:00:00Z"",
""PatternDate"":""2012-11-07T00:00:00Z""
}");
var value = data["SimpleDate"].Value<string>();
现在value
是,05/18/2012 00:00:00
但是我需要原始字符串2012-05-18T00:00:00Z
。
有没有办法获得这个原始价值?另外,我无法更改JObject
创建方式(例如更改设置),因为它作为参数传递给我的课程…
(参考:原始的NJsonSchema问题)
回答:
您无法获取原始字符串,无法识别日期字符串并将其转换为自身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"
这将始终输出JValue
JSON合适的字符串格式。由于您的原始日期采用这种格式,因此可以满足您的需求。
(老实说,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
。
以上是 JToken:获取原始/原始JSON值 的全部内容, 来源链接: utcz.com/qa/420364.html