Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich JSON-Daten mit fehlenden Attributen mithilfe von JSON.NET in C#?

Wie deserialisiere ich JSON-Daten mit fehlenden Attributen mithilfe von JSON.NET in C#?

DDD
Freigeben: 2025-01-26 16:41:11
Original
542 Leute haben es durchsucht

How to Deserialize JSON Data into C# with Missing Attributes Using JSON.NET?

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:

  1. Installieren Sie das JSON.NET NuGet-Paket in Ihrem C#-Projekt.
  2. Erstellen Sie eine C#-Klasse, die die JSON-Datenstruktur darstellt. In diesem Fall ist es MyAccount.
  3. Deserialisieren Sie eine JSON-Zeichenfolge in eine MyAccount-Instanz mit dem folgenden Code:
<code class="language-csharp">var rootObject = JsonConvert.DeserializeObject<MyAccount>(json);</code>
Nach dem Login kopieren

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

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

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!

Quelle:php.cn
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