Вы не можете получить исходную строку, строки даты распознаются и преобразуются в 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()
выходы даты в не-ISO формате, учитывая, что JObject.ToString()
имеет выход содержатся даты в формате 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
.
Это плохо: Я работаю на валидатор JSON Schema, который принимает JObject и может подтвердить такую строку даты с шаблоном регулярного выражения. Это больше не совпадает, когда значение преобразуется в DateTime ... –
Возможно, проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) здесь ? Не могли бы вы использовать тот факт, что Json.NET уже распознал и проанализировал дату в вашем валидаторе? В JSON нет стандарта для дат, см. Http://www.newtonsoft.com/json/help/html/DatesInJSON.htm. – dbc
Кажется, что единственный вариант - отключить синтаксический анализ даты при создании объекта JObject ... здесь исходная проблема: https://github.com/NJsonSchema/NJsonSchema/issues/22 –