Maison >développement back-end >C++ >Comment désérialiser des objets enfants avec des noms de clés numériques dynamiques dans JSON à l'aide de Newtonsoft.Json.Net ?
Désérialiser des données JSON avec des noms de clés dynamiques peut être difficile, surtout lorsque les clés sont numériques. Voici comment résoudre ce problème à l'aide de Newtonsoft.Json.Net.
La structure JSON fournie contient un objet parent « utilisateurs » avec des propriétés connues et inconnues. Pour prendre en charge les propriétés inconnues, un convertisseur personnalisé est requis.
La classe TypedExtensionDataConverter est un convertisseur JSON personnalisé qui gère la désérialisation d'objets avec des propriétés dynamiques. Il garantit que les propriétés inconnues sont désérialisées dans un conteneur typé, en l'occurrence un dictionnaire d'objets User.
Le convertisseur utilise l'attribut JsonTypedExtensionDataAttribute pour identifier les attributs qui doivent contenir des données dynamiques.
Afin d'utiliser des convertisseurs personnalisés, les classes "Users" et "User" ont été modifiées pour contenir des propriétés et des convertisseurs.
Classe d'utilisateurs :
<code>[JsonConverter(typeof(TypedExtensionDataConverter<Users>))] class Users { ... [JsonTypedExtensionData] public Dictionary<string, User> UserTable { get; set; } }</code>
La classe User reste inchangée.
À l'aide d'un convertisseur personnalisé et d'une définition de classe modifiée, la désérialisation peut être effectuée comme suit :
<code>string json = @"...与之前相同的 JSON..."; RootObject root = JsonConvert.DeserializeObject<RootObject>(json);</code>
La propriété UserTable dans l'objet Users contiendra désormais l'objet User désérialisé, permettant l'accès à ses données.
En utilisant un convertisseur JSON personnalisé, vous pouvez désérialiser des sous-objets avec des noms de clés numériques dynamiques, vous permettant ainsi de gérer de manière transparente des structures JSON complexes.
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!