Maison > développement back-end > C++ > Comment puis-je sérialiser des dictionnaires en tant que propriétés d'objet parent dans JSON.NET ?

Comment puis-je sérialiser des dictionnaires en tant que propriétés d'objet parent dans JSON.NET ?

DDD
Libérer: 2025-01-17 11:12:08
original
229 Les gens l'ont consulté

How Can I Serialize Dictionaries as Parent Object Properties in JSON.NET?

JSON.NET : sérialiser le dictionnaire dans les propriétés de l'objet parent

Lors de la sérialisation avec JSON.NET, une question courante est de savoir comment sérialiser des objets avec des propriétés de dictionnaire. Par défaut, JSON.NET ne sérialise pas les dictionnaires dans le cadre de l'objet parent, choisissant plutôt de les ignorer. Pour résoudre ce problème, nous allons explorer une solution permettant l'inclusion de propriétés de dictionnaire dans la représentation JSON de l'objet parent.

Considérons une classe qui contient une propriété de chaîne et une propriété de dictionnaire :

<code>public class Test
{
    public string X { get; set; }

    public Dictionary<string, string> Y { get; set; }
}</code>
Copier après la connexion

Le format de sortie JSON que nous attendons est le suivant, avec les attributs du dictionnaire ("key1" et "key2") imbriqués directement dans l'objet parent :

<code>{
    "X": "value",
    "key1": "value1",
    "key2": "value2"
}</code>
Copier après la connexion

Pour obtenir ce résultat, nous pouvons utiliser JSON.NET 5.0.5 ou supérieur et modifier l'attribut du dictionnaire comme suit :

<code>[JsonExtensionData]
public Dictionary<string, object> Y { get; set; }</code>
Copier après la connexion

En appliquant l'attribut [JsonExtensionData] à une propriété de dictionnaire, nous demandons à JSON.NET de sérialiser les clés et les valeurs du dictionnaire dans le cadre de l'objet parent. De plus, ce mécanisme prend en charge la désérialisation, garantissant que toutes les propriétés JSON qui ne correspondent pas aux membres de la classe sont stockées dans le dictionnaire de données étendu.

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