Heim > Backend-Entwicklung > C++ > Wie verhindert man die Datumsdeserialisierung in JObject.Parse von Json.NET?

Wie verhindert man die Datumsdeserialisierung in JObject.Parse von Json.NET?

Mary-Kate Olsen
Freigeben: 2024-12-31 02:34:09
Original
748 Leute haben es durchsucht

How to Prevent Date Deserialization in Json.NET's JObject.Parse?

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"];
Nach dem Login kopieren

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"];
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage