Heim >Backend-Entwicklung >C++ >Wie verhindert man die Datumsdeserialisierung in JObject.Parse von Json.NET?
Deaktivieren der Datumsdeserialisierung in Json.NET mit JObject.Parse
Json.NET, eine beliebte JSON-Verarbeitungsbibliothek, bietet flexible Deserialisierungsoptionen. Standardmäßig wird versucht, Eigenschaften mit DateTime-Werten in .NET DateTime-Objekte zu konvertieren. In bestimmten Szenarien kann dieses Verhalten jedoch unerwünscht sein.
Bedenken Sie den folgenden Code:
string s = "2012-08-08T01:54:45.3042880+00:00"; JObject j1 = JObject.FromObject(new { time = s }); Object o = j1["time"];
In diesem Beispiel ist o eine Zeichenfolge, die den ursprünglichen Datums-/Uhrzeitwert enthält. Wenn der JSON-String jedoch an ein anderes Programm übertragen und mit JObject.Parse zurückgeparst wird, ändert sich das Ergebnis.
JObject j2 = JObject.Parse(j1.ToString()); Object o2 = j2["time"];
Jetzt ist o2 ein Date-Objekt mit einer anderen Darstellung. Diese Diskrepanz kann in Situationen problematisch sein, in denen der ursprüngliche Wert erhalten bleiben muss.
Lösung
Um die Datumsdeserialisierung bei Verwendung von JObject.Parse zu deaktivieren, bietet Json.NET eine alternativer Ansatz. Anstatt Parse direkt zu verwenden, kann man einen JsonReader verwenden, um Parsing-Optionen zu konfigurieren.
using(JsonReader reader = new JsonTextReader(new StringReader(j1.ToString()))) { reader.DateParseHandling = DateParseHandling.None; JObject o = JObject.Load(reader); }
Indem DateParseHandling vor dem Laden des JSON in ein JObject auf „None“ gesetzt wird, werden Datums- und Uhrzeitwerte als Zeichenfolgen behandelt und ihre Werte bleiben erhalten Originalformat.
Beachten Sie, dass diese Lösung auf der internen Load-Methode von JObject basiert, die von Parse aufgerufen wird. Dieser Ansatz bietet im Vergleich zum Standardverhalten von Parse mehr Kontrolle über den Deserialisierungsprozess.
Das obige ist der detaillierte Inhalt vonWie verhindert man die Datumsdeserialisierung in JObject.Parse von Json.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!