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:
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>
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>
Modellfeld wird ignoriert.
In .NET 5 und höher stehen die folgenden Optionen zum Serialisieren von Jahreseigenschaften und Modellfeldern zur Verfügung:
<code>var options = new JsonSerializerOptions { IncludeFields = true }; string json = JsonSerializer.Serialize(car, options);</code>
<code>[JsonInclude] public string Model; string json = JsonSerializer.Serialize(car);</code>
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!