Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Medan Menggunakan System.Text.Json?
System.Text.Json: Medan Pensirilan dan Penyahserikatan
Dalam versi .NET yang lebih baharu, System.Text.Json.JsonSerializer
ialah kaedah pensirilan dan penyahsirilan JSON pilihan. Walau bagaimanapun, ia menimbulkan cabaran untuk kelas yang mengandungi pembolehubah medan, kerana ini tidak disokong secara lalai.
Masalahnya
Dalam versi lama .NET, pembolehubah medan boleh dimasukkan dalam proses bersiri/penyahserialisasi. Dengan pengenalan JsonSerializer
, hanya atribut yang disokong, yang membawa kepada isu berikut:
<code class="language-csharp">using System.Text.Json; public class Car { public int Year { get; set; } // 正确序列化 public string Model; // 未正确序列化(字段变量) } static void Problem() { Car car = new Car() { Model = "Fit", Year = 2008, }; string json = JsonSerializer.Serialize(car); // {"Year":2008} Car carDeserialized = JsonSerializer.Deserialize<Car>(json); Console.WriteLine(carDeserialized.Model); // null! }</code>
Penyelesaian
Untuk menyelesaikan masalah ini, dua strategi wujud:
1 .NET 5 dan ke atas
Bermula dalam .NET 5, medan awam boleh disiri dan dinyahsiri melalui:
JsonSerializerOptions.IncludeFields
kepada true
[JsonInclude]
pada medanContoh:
<code class="language-csharp">using System.Text.Json; using System.Text.Json.Serialization; static void Main() { var car = new Car { Model = "Fit", Year = 2008 }; // 启用支持 var options = new JsonSerializerOptions { IncludeFields = true }; // 传递“options” var json = JsonSerializer.Serialize(car, options); // 传递“options” var carDeserialized = JsonSerializer.Deserialize<Car>(json, options); Console.WriteLine(carDeserialized.Model); // 输出 "Fit" } public class Car { public int Year { get; set; } [JsonInclude] public string Model; }</code>
2. Teras BERSIH 3.x
Dalam .NET Core 3.x, siri medan tidak disokong. Sebagai penyelesaian, pertimbangkan untuk menggunakan penukar tersuai untuk mencapai gelagat yang diingini.
Untuk maklumat lanjut dan dokumentasi terperinci, sila rujuk sumber berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Medan Menggunakan System.Text.Json?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!