Non è possibile ottenere la stringa originale, le stringhe di data vengono riconosciute e convertite in strutture DateTime
all'interno dello stesso JsonReader
. Si può vedere questo se si fa:
Console.WriteLine(((JValue)data["SimpleDate"]).Value.GetType()); // Prints System.DateTime
È possibile, tuttavia, estrarre le date in formato ISO 8601 facendo:
var value = JsonConvert.SerializeObject(data["SimpleDate"]);
// value is "2012-05-18T00:00:00Z"
Questo emetterà sempre un JValue
in un formato stringa JSON-appropriata. Poiché le date originali sono in questo formato, questo potrebbe soddisfare le tue esigenze.
(Onestamente, io sono JValue.ToString()
uscite sorpreso date in formato non-ISO, dato che JObject.ToString()
vuol uscita contenuta date in formato ISO.)
Se tu fossi in grado di modificare le impostazioni durante la lettura JObject
, si potrebbe utilizzare 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
non c'è sovraccarico JObject.Parse()
che prende un JsonSerializerSettings
, quindi si avrebbe bisogno di utilizzare DeserializeObject
. Questa impostazione alla fine viene propagata a JsonReader.DateParseHandling
.
Questo è male: sto lavorando su un validatore JSON Schema, che prende un jobject e può convalidare un tale stringa data con un modello di espressione regolare. Ciò non corrisponde più quando il valore viene convertito in un DateTime ... –
Forse un po 'di [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) problema qui ? Potresti sfruttare il fatto che Json.NET ha già riconosciuto e analizzato la data nel tuo validatore? Dopotutto, non esiste uno standard per le date in JSON, vedere http://www.newtonsoft.com/json/help/html/DatesInJSON.htm. – dbc
Sembra che l'unica opzione sia disabilitare l'analisi della data durante la creazione del JObject ... qui il problema originale: https://github.com/NJsonSchema/NJsonSchema/issues/22 –