Rumah >pembangunan bahagian belakang >C++ >Bolehkah System.Text.Json Mencapai Pensiri Terpilih Seperti IContractResolver Newtonsoft?

Bolehkah System.Text.Json Mencapai Pensiri Terpilih Seperti IContractResolver Newtonsoft?

DDD
DDDasal
2025-01-04 07:57:41846semak imbas

Can System.Text.Json Achieve Selective Serialization Like Newtonsoft's IContractResolver?

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:

  1. Tentukan kaedah sambungan fasih untuk mengubah suai DefaultJsonTypeInfoResolver:

    public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
  2. 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);
Nota Tambahan

Gunakan tempatan -logik rentetan invarian untuk membina metadata bersiri.
  • System.Text.Json adalah sensitif huruf besar-besaran secara lalai, jadi anda mungkin perlu memadankan nama harta benda mengikut huruf besar.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn