Maison > développement back-end > C++ > Comment désérialiser une propriété dans JSON sans la sérialiser à l'aide de Json.net ?

Comment désérialiser une propriété dans JSON sans la sérialiser à l'aide de Json.net ?

Mary-Kate Olsen
Libérer: 2025-01-10 20:13:42
original
425 Les gens l'ont consulté

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

Utilisez Json.net pour désérialiser les propriétés sans les sérialiser à nouveau

Json.net vous permet de contrôler le processus de sérialisation et de désérialisation des propriétés des objets C#. Cet article explore un scénario dans lequel vous souhaitez désérialiser une propriété spécifique d'un fichier JSON, mais pas la sérialiser dans le fichier JSON. Voici quelques moyens d'y parvenir :

Méthode 1 : Utiliser la méthode ShouldSerialize

Json.net prend en charge la sérialisation conditionnelle à l'aide de la méthode ShouldSerialize. Pour les propriétés que vous souhaitez ignorer lors de la sérialisation, ajoutez une méthode booléenne ShouldSerializeBlah() à votre classe, où Blah est le nom de la propriété. Cette méthode doit toujours renvoyer false.

Par exemple :

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

    public Bang ReplacementSetting { get; set; }

    public bool ShouldSerializeObsoleteSetting()
    {
        return false;
    }
}</code>
Copier après la connexion

Méthode 2 : Utiliser JObject pour faire fonctionner JSON

Vous pouvez désérialiser les objets de configuration en JObject au lieu de vous fier à JsonConvert.SerializeObject. Supprimez les attributs indésirables de JSON avant d'écrire dans JSON :

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

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

json = jo.ToString();</code>
Copier après la connexion

Méthode 3 : Utiliser les attributs

Une autre façon consiste à utiliser des attributs :

  1. Ajoutez l'attribut [JsonIgnore] aux propriétés qui ne nécessitent pas de sérialisation.
  2. Crée un setter de propriété privée alternative avec le même type que la propriété d'origine. L'implémentation du setter doit définir la propriété d'origine.
  3. Applique l'attribut [JsonProperty] au setter de remplacement avec le même nom JSON que la propriété d'origine.

Voici un exemple :

<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>
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal