Maison > développement back-end > C++ > Comment remplacer la sérialisation des attributs « JsonProperty » dans JSON.Net ?

Comment remplacer la sérialisation des attributs « JsonProperty » dans JSON.Net ?

DDD
Libérer: 2025-01-07 15:57:44
original
231 Les gens l'ont consulté

How to Override `JsonProperty` Attribute Serialization in JSON.Net?

Remplacer le comportement de sérialisation des propriétés JsonProperty dans JSON.Net

Lors de la sérialisation de JSON à l'aide de Json.Net dans ASP.Net MVC, vous pouvez utiliser l'attribut [JsonProperty] pour personnaliser le nom de la propriété. Toutefois, dans certains cas, vous souhaiterez peut-être ignorer cette propriété et utiliser le nom de propriété d'origine pour la sérialisation.

À cette fin, un analyseur de contrat personnalisé peut être utilisé. L'analyseur de contrat détermine comment JSON.Net sérialise les objets en JSON. Voici comment créer un analyseur de contrat qui ignore l'attribut [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>
Copier après la connexion

Pour utiliser le résolveur de contrat, instanciez-le et transmettez-le à JsonSerializerSettings :

<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new LongNameContractResolver();</code>
Copier après la connexion

Enfin, transmettez ces paramètres à JsonConvert.SerializeObject pour sérialiser l'objet :

<code class="language-csharp">string json = JsonConvert.SerializeObject(obj, settings);</code>
Copier après la connexion

Cet analyseur de contrat personnalisé ignorera effectivement l'attribut [JsonProperty] et sérialisera l'attribut en utilisant son nom d'origine, même si l'attribut JsonProperty spécifie un nom plus court.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal