Clés dynamiques dans la désérialisation JSON
Lorsque vous traitez des données JSON contenant des clés dynamiques, l'accès aux propriétés des objets peut être difficile. Considérez les données suivantes :
{ "users" : { "100034" : { "name" : "tom", "state" : "WA", "id" : "cedf-c56f-18a4-4b1" }, "10045" : { "name" : "steve", "state" : "NY", "id" : "ebb2-92bf-3062-7774" }, "12345" : { "name" : "mike", "state" : "MA", "id" : "fb60-b34f-6dc8-aaf7" } } }
Dans cet objet JSON, les clés sont des chaînes numériques, ce qui rend difficile la définition de classes avec des noms de propriétés statiques. Pour résoudre ce problème, nous pouvons exploiter la propriété Dictionary
Structure de classe et désérialisation
Nous définissons les classes suivantes :
class RootObject { public Dictionary<string, User> users { get; set; } } class User { public string name { get; set; } public string state { get; set; } public string id { get; set; } }
Ensuite, nous pouvons désérialiser les données JSON comme ceci :
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
Cela crée une instance RootObject avec un Dictionnaire
Accès aux propriétés de l'objet
Nous pouvons désormais accéder aux propriétés de l'objet à l'aide des touches du dictionnaire. Le code suivant parcourt les utilisateurs :
foreach (string key in root.users.Keys) { User user = root.users[key]; // Access properties using user.name, user.state, etc. }
Sortie :
key: 10045 name: steve state: NY id: ebb2-92bf-3062-7774 key: 12345 name: mike state: MA id: fb60-b34f-6dc8-aaf7 key: 100034 name: tom state: WA id: cedf-c56f-18a4-4b1
Cette approche nous permet de désérialiser les données JSON avec des clés dynamiques et d'accéder aux propriétés des objets de manière transparente.
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!