Ecco il codice:Json.NET Disabilitare la deserializzazione su DateTime
string s = "2012-08-08T01:54:45.3042880+00:00";
JObject j1 = JObject.FromObject(new
{
time=s
});
Object o = j1["time"];
Possiamo controllare che o si stringa e uguale a "2012-08-08T01: 54: 45,3,04288 milioni + 00: 00"
Ora trasferiamo j1.ToString() per un altro programma, che è
{
"time": "2012-08-08T01:54:45.3042880+00:00"
}
poi l'altro programma, cercare di analizzare di nuovo a jobject, che è
JObject j2 = JObject.Parse(j1.ToString());
Object o2 = j2["time"];
Ora, se si verifica o2, il tipo di o2 è Data, o2.ToString() è 8/7/2012 9:54:45 PM.
La mia domanda è:
È che non c'è modo per disattivare la Data di deserializzazione per JObject.Parse, e solo ottenere la stringa crudo?
Grazie in anticipo
programma ricevono l'intera stringa JSON che è { "tempo": "2012-08-08T01: 54: 45,3,04288 milioni + 00: 00"}, quindi il programma non può usare JObject.FromObject per analizzare, deve usare JObject.Parse per analizzare la stringa e JOjbect.Parse prende solo 1 parametro. – liuhongbo
@liuhongbo, strano che 'Parse' non fornisce le opzioni che' FromObject' fa. Questo ha raggiunto la mia curiosità, quindi ho scaricato la fonte e trovato una soluzione. Modificherò la mia risposta. –
grazie, Samuel Neff, che funziona perfettamente. Inoltre, trovato un altro modo per gestire questo problema: Impostazioni JsonSerializerSettings = new JsonSerializerSettings(); ; settings.DateParseHandling = DateParseHandling.None; JObject j2 = JsonConvert.DeserializeObject (j1.ToString(), impostazioni); –
liuhongbo