Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyahsiri Harta dalam JSON Tanpa Mensirikannya Kembali Menggunakan Json.net?

Bagaimana untuk Menyahsiri Harta dalam JSON Tanpa Mensirikannya Kembali Menggunakan Json.net?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 20:13:42469semak imbas

How to Deserialize a Property in JSON Without Serializing It Back Using Json.net?

Gunakan Json.net untuk menyahsiri hartanah tanpa mensirikannya kembali

Json.net membolehkan anda mengawal proses bersiri dan penyahserikatan sifat objek C#. Artikel ini meneroka senario di mana anda ingin menyahsiri sifat tertentu daripada fail JSON, tetapi tidak mensirikannya kembali ke fail JSON. Berikut ialah beberapa cara untuk mencapai matlamat ini:

Kaedah 1: Gunakan kaedah ShouldSerialize

Json.net menyokong siri bersyarat menggunakan kaedah ShouldSerialize. Untuk sifat yang anda ingin abaikan semasa bersiri, tambahkan kaedah Boolean ShouldSerializeBlah() pada kelas anda, dengan Blah ialah nama sifat. Kaedah ini harus sentiasa mengembalikan palsu.

Contohnya:

<code class="language-csharp">class Config
{
    public Fizz ObsoleteSetting { get; set; }

    public Bang ReplacementSetting { get; set; }

    public bool ShouldSerializeObsoleteSetting()
    {
        return false;
    }
}</code>

Kaedah 2: Gunakan JObject untuk mengendalikan JSON

Anda boleh menyahsiri objek konfigurasi kepada JObject dan bukannya bergantung pada JsonConvert.SerializeObject. Alih keluar atribut yang tidak diingini daripada JSON sebelum menulis ke JSON:

<code class="language-csharp">JObject jo = JObject.FromObject(config);

// 从其父级中删除“ObsoleteSetting” JProperty
jo["ObsoleteSetting"].Parent.Remove();

json = jo.ToString();</code>

Kaedah 3: Gunakan atribut

Cara lain ialah menggunakan atribut:

  1. Tambahkan atribut [JsonIgnore] pada sifat yang tidak memerlukan siri.
  2. Mencipta penetap harta persendirian alternatif dengan jenis yang sama seperti harta asal. Pelaksanaan setter harus menetapkan sifat asal.
  3. Menggunakan atribut [JsonProperty] pada penetap ganti dengan nama JSON yang sama seperti sifat asal.

Berikut ialah contoh:

<code class="language-csharp">class Config
{
    [JsonIgnore]
    public Fizz ObsoleteSetting { get; set; }

    [JsonProperty("ObsoleteSetting")]
    private Fizz ObsoleteSettingAlternateSetter
    {
        // get intentionally omitted here
        set { ObsoleteSetting = value; }
    }

    public Bang ReplacementSetting { get; set; }
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyahsiri Harta dalam JSON Tanpa Mensirikannya Kembali Menggunakan Json.net?. 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