Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengatasi Atribut JsonProperty Secara Selektif untuk Pensirilan JSON Tersuai dalam ASP.NET MVC?

Bagaimana untuk Mengatasi Atribut JsonProperty Secara Selektif untuk Pensirilan JSON Tersuai dalam ASP.NET MVC?

Linda Hamilton
Lepaskan: 2025-01-07 15:52:40
asal
661 orang telah melayarinya

How to Selectively Override JsonProperty Attributes for Customized JSON Serialization in ASP.NET MVC?

Kawal atribut JsonProperty secara fleksibel untuk melaksanakan siri JSON tersuai ASP.NET MVC

Dalam aplikasi ASP.NET MVC menggunakan Json.Net, pembangun sering menggunakan atribut [JsonProperty(PropertyName = "shortName")] untuk mengurangkan jumlah data semasa penyirian JSON. Pendekatan ini berfungsi dengan baik untuk pelanggan .NET, tetapi pelanggan berasaskan penyemak imbas akan menghadapi masalah menggunakan nama sifat yang disingkatkan.

Untuk menyelesaikan masalah ini, anda boleh menggunakan penghurai kontrak tersuai untuk mengabaikan atribut [JsonProperty()] secara dinamik semasa penyirian. Begini caranya:

Penghurai kontrak tersuai

<code class="language-csharp">class LongNameContractResolver : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var list = base.CreateProperties(type, memberSerialization);

        foreach (JsonProperty prop in list)
        {
            prop.PropertyName = prop.UnderlyingName;
        }

        return list;
    }
}</code>
Salin selepas log masuk

Togol penindasan atribut

Untuk mengabaikan atribut [JsonProperty()] secara terpilih semasa penyirian, anda boleh menetapkan atribut JsonSerializerSettings bagi ContractResolver secara bersyarat. Contohnya adalah seperti berikut:

<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented
};

if (useLongNames)
{
    settings.ContractResolver = new LongNameContractResolver();
}

string jsonString = JsonConvert.SerializeObject(obj, settings);</code>
Salin selepas log masuk

Dengan menetapkan bendera useLongNames, anda boleh mengawal sama ada atribut [JsonProperty()] diabaikan dan nama atribut yang lebih panjang digunakan untuk bersiri. Ini memberikan kawalan terperinci ke atas output JSON berdasarkan keperluan pelanggan tertentu.

Contoh output

Pertimbangkan contoh berikut:

<code class="language-csharp">Foo foo = new Foo
{
    CustomerNumber = "BG60938",
    CustomerName = "Bubba Gump Shrimp Company"
};

Console.WriteLine("--- 使用JsonProperty名称 ---");
Console.WriteLine(Serialize(foo, false));
Console.WriteLine();
Console.WriteLine("--- 忽略JsonProperty名称 ---");
Console.WriteLine(Serialize(foo, true));</code>
Salin selepas log masuk

Output:

<code>--- 使用JsonProperty名称 ---
{
  "cust-num": "BG60938",
  "cust-name": "Bubba Gump Shrimp Company"
}

--- 忽略JsonProperty名称 ---
{
  "CustomerNumber": "BG60938",
  "CustomerName": "Bubba Gump Shrimp Company"
}</code>
Salin selepas log masuk

Dengan mengatasi atribut [JsonProperty()] secara dinamik, anda boleh menyesuaikan proses penyirian JSON untuk mengoptimumkan jumlah data untuk klien tertentu sambil mengekalkan hierarki objek yang konsisten untuk pelanggan lain.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Atribut JsonProperty Secara Selektif untuk Pensirilan JSON Tersuai dalam ASP.NET MVC?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan