Heim > Backend-Entwicklung > C++ > Wie serialisiere ich Klassenfelder mit System.Text.Json?

Wie serialisiere ich Klassenfelder mit System.Text.Json?

Barbara Streisand
Freigeben: 2025-01-14 07:43:42
Original
452 Leute haben es durchsucht

How to Serialize Class Fields with System.Text.Json?

Verwendung von System.Text.Json.JsonSerializer und Klassenfeldern

Nach dem Upgrade auf .NET Core 3 können Entwickler auf Probleme im Zusammenhang mit Klassenfeldern und Serialisierung stoßen. System.Text.Json.JsonSerializer benötigt Eigenschaften für die Serialisierung und Deserialisierung, aber Felder eignen sich oft besser zur Darstellung von Klassendaten. Dies wirft die Frage auf: Wie kann sichergestellt werden, dass Felder während der Serialisierung und Deserialisierung korrekt behandelt werden?

In .NET Core 3.1 serialisiert System.Text.Json Felder standardmäßig nicht. Wie in der Dokumentation angegeben, „werden Felder in System.Text.Json in .NET Core 3.1 nicht unterstützt“.

In späteren Versionen von .NET stehen jedoch einige Lösungen zur Verfügung. In .NET 5 und höher:

  • Öffentliche Felder können serialisiert werden, indem JsonSerializerOptions.IncludeFields auf true gesetzt wird.
  • Sie können auch das Attribut [JsonInclude] verwenden, um zu serialisierende Felder zu markieren.

Um dies zu demonstrieren, betrachten Sie eine Car-Klasse, die das Feld Model und die Eigenschaft Year:

enthält
<code>public class Car
{
    public int Year { get; set; }
    public string Model;
}</code>
Nach dem Login kopieren

Wenn IncludeFields in .NET Core 3.1 nicht auf „true“ gesetzt ist, sieht das Ergebnis der Serialisierung von „Car“ wie folgt aus:

<code>{"Year":2008}</code>
Nach dem Login kopieren

Modellfeld wird ignoriert.

In .NET 5 und höher stehen die folgenden Optionen zum Serialisieren von Jahreseigenschaften und Modellfeldern zur Verfügung:

  1. IncludeFields aktivieren:
<code>var options = new JsonSerializerOptions { IncludeFields = true };
string json = JsonSerializer.Serialize(car, options);</code>
Nach dem Login kopieren
  1. Verwenden Sie das [JsonInclude]-Attribut:
<code>[JsonInclude]
public string Model;
string json = JsonSerializer.Serialize(car);</code>
Nach dem Login kopieren

Durch die Verwendung dieser Techniken können Entwickler sicherstellen, dass ihre Klassenfelder während der Serialisierung und Deserialisierung korrekt und im Einklang mit den Klassenattributen behandelt werden.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich Klassenfelder mit System.Text.Json?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage