Maison >développement back-end >C++ >Comment puis-je désérialiser JSON avec des champs inconnus à l'aide de ExtensionDataAttribute de JSON .NET ?
Lorsque le résultat JSON contient des champs connus et inconnus et que les noms de champs inconnus sont imprévisibles, ces champs inconnus doivent être mappés à un dictionnaire pour y accéder et les modifier. Pour cela, nous pouvons utiliser l'attribut JsonExtensionDataAttribute
en JSON .NET.
Considérez la structure de classe suivante :
<code class="language-csharp">public class Product { public string id { get; set; } public string name { get; set; } // 额外字段 [JsonExtensionData] private IDictionary<string, JToken> _extraStuff; }</code>
En appliquant JsonExtensionDataAttribute
à l'attribut _extraStuff
, nous pouvons demander à JSON .NET de mapper tous les champs inconnus à ce dictionnaire. JToken
représente les données JSON brutes pour ce champ spécifique.
Lors de l'utilisation de cette classe pour désérialiser JSON :
<code class="language-json">{ "id": "7908", "name": "product name", "unknown_field_1": "some value", "unknown_field_2": "some value" }</code>Le dictionnaire
dans l'objet Product
_extraStuff
sera automatiquement renseigné avec les paires clé-valeur suivantes :
<code class="language-csharp">{ {"unknown_field_1", "some value"}, {"unknown_field_2", "some value"} }</code>
Cette approche fournit un moyen efficace de gérer les champs inconnus sans avoir besoin d'un analyseur de contrat personnalisé ou d'un héritage d'objet dynamique.
Remarque : La propriété JsonExtensionDataAttribute
est disponible dans JSON .NET v5 version 5 et supérieure.
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!