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 :
public class Product { public string id { get; set; } public string name { get; set; } // 额外字段 [JsonExtensionData] private IDictionary<string, JToken> _extraStuff; }
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 :
{ "id": "7908", "name": "product name", "unknown_field_1": "some value", "unknown_field_2": "some value" }
dans l'objet Product
_extraStuff
sera automatiquement renseigné avec les paires clé-valeur suivantes :
{ {"unknown_field_1", "some value"}, {"unknown_field_2", "some value"} }
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!