Sirikan medan kelas dalam System.Text.Json
System.Text.Json dalam .NET Core 3 memperkenalkan sokongan untuk pensirilan objek dan penyahsirilan. Walau bagaimanapun, masalah sering timbul apabila cuba mensiri medan kelas menggunakan perpustakaan ini.
Pertimbangkan contoh berikut:
<code>public class Car { public int Year { get; set; } // 正确序列化 public string Model; // 未序列化 }</code>
Apabila cuba membuat siri contoh Kereta, rentetan JSON yang dijana tidak mengandungi medan seperti Model. Ini kerana System.Text.Json dalam .NET Core 3 tidak menyokong medan bersiri.
Penyelesaian
Dalam .NET 5 dan ke atas, System.Text.Json mempunyai keupayaan untuk mensiri medan. Ini boleh dicapai dengan mendayakan sokongan medan atau menandakan medan secara manual untuk bersiri.
Dayakan siri medan
Apabila mensiri, anda boleh mendayakan pensirilan medan dengan menetapkan sifat JsonSerializerOptions.IncludeFields kepada benar:
<code>Car car = new Car { Model = "Fit", Year = 2008 }; // 启用字段序列化 var options = new JsonSerializerOptions { IncludeFields = true }; // 传递 "options" 进行序列化 var json = JsonSerializer.Serialize(car, options);</code>
Tandai medan untuk disiri
Sebagai alternatif, anda boleh menggunakan atribut [JsonInclude] untuk menandakan medan individu untuk disirikan:
<code>[JsonInclude] public string Model;</code>
Contoh dua kaedah
<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>
Dengan melaksanakan teknik ini, anda boleh memastikan objek bersiri dan desiri mempunyai nilai yang sama, termasuk nilai dalam medan kelas.
Atas ialah kandungan terperinci Bagaimana untuk Mensiri Medan Kelas Menggunakan System.Text.Json dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!