Maison > développement back-end > C++ > Comment désérialiser JSON avec des champs inconnus à l'aide de JsonExtensionDataAttribute ?

Comment désérialiser JSON avec des champs inconnus à l'aide de JsonExtensionDataAttribute ?

Linda Hamilton
Libérer: 2025-01-18 09:11:09
original
144 Les gens l'ont consulté

How to Deserialize JSON with Unknown Fields Using JsonExtensionDataAttribute?

Gestion de la désérialisation JSON contenant des champs connus et inconnus

Lors du traitement des résultats JSON, vous rencontrez souvent des situations où les données reçues contiennent des champs connus, ainsi que d'autres champs inconnus au moment de la demande. Cela peut poser des problèmes lorsque vous essayez de désérialiser des données en objets structurés.

Une façon de résoudre ce problème consiste à utiliser une bibliothèque telle que JSON.NET, qui permet des analyseurs de contrats personnalisés. Cependant, la mise en place d’un résolveur de contrat personnalisé peut s’avérer complexe.

Une autre solution consiste à utiliser JsonExtensionDataAttribute dans JSON.NET. Cette propriété vous permet de spécifier un champ supplémentaire dans l'objet qui contiendra tous les champs inconnus du JSON.

Voici un exemple d'utilisation de cette propriété :

<code class="language-csharp">public class Product
{
    public string Id { get; set; }
    public string Name { get; set; }

    // 此属性将包含来自JSON的所有未知字段
    [JsonExtensionData]
    private IDictionary<string, JToken> ExtraFields { get; set; }
}</code>
Copier après la connexion

Lorsque vous utilisez cette classe pour désérialiser un objet JSON, les champs connus (Id et Name) sont mappés aux propriétés de l'objet. Les champs inconnus seront stockés dans le dictionnaire ExtraFields. Vous pouvez ensuite accéder à ces champs supplémentaires à l'aide d'opérations de dictionnaire standard, par exemple :

<code class="language-csharp">Console.WriteLine(product.ExtraFields["_unknown_field_name_1"]);</code>
Copier après la connexion

Cette approche simplifie le mappage des champs inconnus en tirant parti des capacités intégrées de JSON.NET. Il nécessite JSON.NET 5 ou supérieur.

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