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
Lepaskan: 2025-01-04 07:57:41
asal
826 orang telah melayarinya

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);
    Salin selepas log masuk
  2. Tetapkan TypeInfoResolver dalam JsonSerializerOptions:

    var options = new JsonSerializerOptions
    {
        TypeInfoResolver = new DefaultJsonTypeInfoResolver()
            .SerializeSelectedFields("FirstName,Email,Id"),
        ...
    };
    Salin selepas log masuk

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);
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan