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

Wie serialisiere ich Klassenfelder mit System.Text.Json in .NET?

Mary-Kate Olsen
Freigeben: 2025-01-14 06:21:44
Original
700 Leute haben es durchsucht

How to Serialize Class Fields Using System.Text.Json in .NET?

Serialisierung von Klassenfeldern in System.Text.Json

System.Text.Json in .NET Core 3 führt Unterstützung für die Objektserialisierung und -deserialisierung ein. Beim Versuch, Klassenfelder mithilfe dieser Bibliothek zu serialisieren, tritt jedoch häufig ein Problem auf.

Betrachten Sie das folgende Beispiel:

<code>public class Car
{
    public int Year { get; set; } // 正确序列化
    public string Model; // 未序列化
}</code>
Nach dem Login kopieren

Beim Versuch, eine Car-Instanz zu serialisieren, enthält die generierte JSON-Zeichenfolge keine Felder wie „Modell“. Dies liegt daran, dass System.Text.Json in .NET Core 3 keine serialisierten Felder unterstützt.

Lösung

In .NET 5 und höher verfügt System.Text.Json über die Möglichkeit, Felder zu serialisieren. Dies kann erreicht werden, indem die Feldunterstützung aktiviert oder die Felder manuell für die Serialisierung markiert werden.

Feldserialisierung aktivieren

Beim Serialisieren können Sie die Feldserialisierung aktivieren, indem Sie die Eigenschaft JsonSerializerOptions.IncludeFields auf true setzen:

<code>Car car = new Car { Model = "Fit", Year = 2008 };

// 启用字段序列化
var options = new JsonSerializerOptions { IncludeFields = true };

// 传递 "options" 进行序列化
var json = JsonSerializer.Serialize(car, options);</code>
Nach dem Login kopieren

Zu serialisierende Felder markieren

Alternativ können Sie das Attribut [JsonInclude] verwenden, um einzelne Felder für die Serialisierung zu markieren:

<code>[JsonInclude]
public string Model;</code>
Nach dem Login kopieren

Beispiele für zwei Methoden

<code>public class Car
{
    public int Year { get; set; } // 正确序列化

    [JsonInclude]
    public string Model;
}

// 或

Car car = new Car { Model = "Fit", Year = 2008 };

var options = new JsonSerializerOptions { IncludeFields = true };

var json = JsonSerializer.Serialize(car, options);</code>
Nach dem Login kopieren

Durch die Implementierung dieser Techniken können Sie sicherstellen, dass serialisierte und deserialisierte Objekte genau die gleichen Werte haben, einschließlich der Werte in Klassenfeldern.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich Klassenfelder mit System.Text.Json in .NET?. 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