Maison >développement back-end >C++ >Comment puis-je désérialiser sélectivement les propriétés dans JSON.NET tout en conservant la compatibilité ?

Comment puis-je désérialiser sélectivement les propriétés dans JSON.NET tout en conservant la compatibilité ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 20:04:42696parcourir

How Can I Selectively Deserialize Properties in JSON.NET While Maintaining Compatibility?

Désérialisation sélective des attributs dans JSON.NET

Tout en conservant la compatibilité JSON, vous souhaiterez peut-être convertir les propriétés sérialisées des énumérations en classes. JSON.NET propose plusieurs façons de répondre à ce besoin :

Méthode 1 : méthode ShouldSerialize

JSON.NET fournit la méthode ShouldSerialize. Vous pouvez empêcher son inclusion en créant une méthode ShouldSerializePropertyName où PropertyName est la propriété à exclure de la sérialisation. Par exemple :

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

    public bool ShouldSerializeObsoleteSetting()
    {
        return false; // 从序列化中排除 ObsoleteSetting
    }
}</code>

Méthode 2 : Utiliser JObject pour opérer

Au lieu d'utiliser JsonConvert.SerializeObject, convertissez l'objet Config en objet JSON (JObject), supprimez les propriétés requises et sérialisez le JObject résultant :

<code class="language-csharp">var jo = JObject.FromObject(config);
jo["ObsoleteSetting"].Parent.Remove();
var json = jo.ToString();</code>

Méthode 3 : Exclusion basée sur les attributs

L'application de [JsonIgnore] à la propriété cible garantit qu'elle est exclue de la sérialisation. Cependant, pour désérialiser la propriété, créez un setter privé avec le même nom de propriété et appliquez-lui [JsonProperty]. Par exemple :

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

    [JsonProperty("ObsoleteSetting")]
    private Fizz ObsoleteSettingSetter { set { ObsoleteSetting = value; } }
}</code>

En employant ces technologies, vous pouvez contrôler de manière sélective la sérialisation et la désérialisation des propriétés, garantissant ainsi la compatibilité avec les configurations JSON existantes tout en s'adaptant aux modifications de propriétés.

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!

Déclaration:
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