System.Text.Json 中類別字段的序列化
.NET Core 3 中的 System.Text.Json 引入了物件序列化和反序列化的支援。但是,嘗試使用此庫序列化類別欄位時,通常會出現一個問題。
考慮以下範例:
<code>public class Car { public int Year { get; set; } // 正确序列化 public string Model; // 未序列化 }</code>
嘗試序列化 Car 實例時,產生的 JSON 字串中不包含 Model 等欄位。這是因為 .NET Core 3 中的 System.Text.Json 不支援序列化欄位。
解
在 .NET 5 及更高版本中,System.Text.Json 具備了序列化欄位的能力。這可以透過啟用欄位支援或手動標記要序列化的欄位來實現。
啟用欄位序列化
序列化時,您可以將 JsonSerializerOptions.IncludeFields 屬性設為 true 來啟用欄位序列化:
<code>Car car = new Car { Model = "Fit", Year = 2008 }; // 启用字段序列化 var options = new JsonSerializerOptions { IncludeFields = true }; // 传递 "options" 进行序列化 var json = JsonSerializer.Serialize(car, options);</code>
標記要序列化的欄位
或者,您可以使用 [JsonInclude] 屬性標記要序列化的各個欄位:
<code>[JsonInclude] public string Model;</code>
兩種方法的範例
<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>
透過實作這些技術,您可以確保序列化和反序列化的物件具有完全相同的值,包括類別欄位中的值。
以上是如何在 .NET 中使用 System.Text.Json 序列化類別欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!