Bolehkah System.Text.Json Melaksanakan Sirialisasi Terpilih Seperti IContractResolver?
Ruang nama System.Text.Json baharu tidak mempunyai persamaan yang tepat dengan Newtonsoft IContractResolver. Walau bagaimanapun, .NET 7 memperkenalkan penyesuaian kontrak, yang menawarkan fungsi yang serupa.
Penyesuaian Kontrak dalam .NET 7
Penyesuaian kontrak membolehkan pengguna menyesuaikan metadata siri JSON menggunakan IJsonTypeInfoResolver antara muka. Dengan melaksanakan antara muka ini, pembangun boleh mencipta penyelesai kontrak mereka sendiri untuk menentukan sifat mana yang hendak disirikan.
Mencipta Penyelesai Kontrak Tersuai
Untuk mencipta penyelesai kontrak tersuai yang secara terpilih mensiri medan, anda boleh mengikuti langkah berikut:
Tentukan kaedah sambungan fasih untuk mengubah suai DefaultJsonTypeInfoResolver:
public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
Tetapkan TypeInfoResolver dalam JsonSerializerOptions:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... };
Contoh 🎜>Kod berikut menunjukkan cara untuk menyerikan sifat "FirstName", "Emel" dan "Id" secara selektif menggunakan penyesuaian kontrak:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... }; // Serialize the object var json = JsonSerializer.Serialize(obj, options);
Gunakan tempatan -logik rentetan invarian untuk membina metadata bersiri.
Atas ialah kandungan terperinci Bolehkah System.Text.Json Mencapai Pensiri Terpilih Seperti IContractResolver Newtonsoft?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!