Ich habe eine Struktur, die eine DateTime darstellt, die auch Zoneninformationen wie folgt hat:
%Vor%Ich kann das Objekt serialisieren mit:
%Vor%Aber wenn ich es mit dem folgenden deserialisieren, bekomme ich einen ungültigen DateTime Wert (DateTime.MinValue)
%Vor%Jede Hilfe wird sehr geschätzt.
Sie müssen eine benutzerdefinierte JsonConverter
richtig schreiben Serialisieren und Deserialisieren dieser Werte. Fügen Sie diese Klasse zu Ihrem Projekt hinzu.
Registrieren Sie es dann mit den von Ihnen verwendeten json-Einstellungen. Zum Beispiel können die Standardeinstellungen wie folgt geändert werden:
%Vor%Dann wird es ordnungsgemäß in ein verwendbares Format serialisiert. Beispiel:
%Vor%Und es wird auch richtig deserialisiert.
Wenn Sie die lokale Zeit einschließen möchten, fügen Sie dies nur zur WriteJson
-Methode hinzu, aber sie sollte wahrscheinlich beim Deserialisieren ignoriert werden. Sonst hättest du zwei verschiedene Wahrheitsquellen. Nur einer kann maßgebend sein.
Außerdem könntest du stattdessen Noda Time ausprobieren, das eine ZonedDateTime
struct für genau diesen Zweck enthält. Es gibt bereits eine Unterstützung für die Serialisierung über die NodaTime.Serialization.JsonNet NuGet-Paket.
Tags und Links c# datetime serialization deserialization json.net