Verwenden Sie JSON.NET, um JSON-Daten nach C# zu deserialisieren
Das Deserialisieren von JSON-Daten in ein C#-Objekt kann eine Herausforderung sein, insbesondere wenn die JSON-Struktur möglicherweise fehlende Eigenschaften enthält. Dieser Artikel bietet eine Lösung zum Deserialisieren von JSON-Daten in eine C#-Klasse, auch wenn einige Felder in der JSON-Quelle fehlen.
Szene:
Stellen Sie sich eine C#-Klasse MyAccount
mit mehreren Eigenschaften vor, von denen einige möglicherweise nicht in den JSON-Daten erscheinen, die deserialisiert werden. Das Ziel besteht darin, die Daten der MyAccount
-Instanz aus JSON zu füllen, ohne jeden Wert manuell zu extrahieren.
Best Practices:
Der empfohlene Ansatz ist die Verwendung einer JSON-Deserialisierungsbibliothek wie JSON.NET. JSON.NET bietet eine JsonConvert
-Klasse, die JSON-Daten in stark typisierte Objekte deserialisieren kann.
Um JSON.NET zu verwenden:
MyAccount
. MyAccount
-Instanz mit dem folgenden Code: <code class="language-csharp">var rootObject = JsonConvert.DeserializeObject<MyAccount>(json);</code>
Umgang mit fehlenden Daten:
Um fehlende Daten in einer JSON-Quelle zu behandeln, können Sie das Attribut DefaultValue
für eine C#-Klasseneigenschaft verwenden. Zum Beispiel für das PasswordExpire
-Attribut:
<code class="language-csharp">[JsonProperty(PropertyName = "passwordexpired")] [DefaultValue(typeof(DateTime), "0001-01-01T00:00:00")] public DateTime PasswordExpire { get; set; }</code>
Dieses Attribut legt den Standardwert des PasswordExpire
-Attributs auf „0001-01-01T00:00:00“ fest, wenn es nicht in den JSON-Daten vorhanden ist. Dadurch wird sichergestellt, dass die MyAccount
-Instanz mit gültigen Daten gefüllt ist, auch wenn einige Felder fehlen.
Beispiel:
Verwendung der in der Frage bereitgestellten Beispiel-JSON- und MyAccount
-Klassen:
<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(json); Console.WriteLine(myAccount.UserID); // "rjohnson" Console.WriteLine(myAccount.GivenName); // "Robert" Console.WriteLine(myAccount.PasswordExpire); // "2009-10-31 04:15:50" (从JSON解析) Console.WriteLine(myAccount.EmployeeID); // "999777666"</code>
Durch die Nutzung von JSON.NET und dem Attribut DefaultValue
können Sie JSON-Daten effizient in ein C#-Objekt deserialisieren, selbst wenn die JSON-Struktur fehlende Attribute enthält.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON-Daten mit fehlenden Attributen mithilfe von JSON.NET in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!