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>
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>
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>
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>
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!