Timpa kelakuan bersiri sifat JsonProperty dalam JSON.Net
Apabila mensiri JSON menggunakan Json.Net dalam ASP.Net MVC, anda boleh menggunakan atribut [JsonProperty]
untuk menyesuaikan nama sifat. Walau bagaimanapun, dalam beberapa kes anda mungkin mahu mengabaikan sifat ini dan menggunakan nama sifat asal untuk penyirian.
Untuk tujuan ini, penghurai kontrak tersuai boleh digunakan. Penghurai kontrak menentukan cara JSON.Net menyerikan objek ke dalam JSON. Begini cara untuk membuat penghurai kontrak yang mengabaikan atribut [JsonProperty]
:
<code class="language-csharp">class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { // 基类创建具有简短名称的属性 IList<JsonProperty> list = base.CreateProperties(type, memberSerialization); // 使用原始名称覆盖属性名称 foreach (JsonProperty prop in list) { prop.PropertyName = prop.UnderlyingName; } return list; } }</code>
Untuk menggunakan penyelesai kontrak, nyatakannya dan serahkannya kepada JsonSerializerSettings
:
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.ContractResolver = new LongNameContractResolver();</code>
Akhir sekali, hantar tetapan ini kepada JsonConvert.SerializeObject
untuk mensirikan objek:
<code class="language-csharp">string json = JsonConvert.SerializeObject(obj, settings);</code>
Penghurai kontrak tersuai ini akan mengabaikan atribut [JsonProperty]
dengan berkesan dan menyerikan atribut menggunakan nama asalnya, walaupun atribut JsonProperty
menentukan nama yang lebih pendek.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Pensiri Atribut `JsonProperty` dalam JSON.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!