Résoudre l'énigme du JSON imbriqué avec des clés inconnues
Démêler des données JSON complexes avec des clés inconnues peut être une tâche ardue. Considérez la structure JSON déroutante fournie :
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ], "Server2.example.com": [ { "application": "Mysql", "host": { "name": "/^Server[23456]/" }, "owner": "User2", "project": "DB", "subowner": "User3" } ] }, "response_ms": 659, "success": true }
La structure prête à confusion, mais nous pouvons la décortiquer étape par étape. Dans un premier temps, on note la présence de noms de serveurs inconnus, tels que « Serveur1.exemple.com » et « Serveur2.exemple.com », qui varient dynamiquement. De plus, le champ "hôte" contient une expression regex cryptique sans clé englobante.
Pour résoudre ce défi, concentrons-nous sur la structure fournie :
type ServerDetails struct { Message struct{ Hostname struct{ Details struct{ Application string `json:"application"` }`json:"-"` }`json:"-"` }`json:"message"` }
Cette structure est conçue pour gérer les champs connus dans l'objet "message", mais il ne parvient pas à capturer les différents noms de serveur et le champ "hôte" particulier.
Une idée clé consiste à utiliser une structure de données plus flexible, à savoir une carte [chaîne]ServerStruct. Cela nous permet de prendre en compte les noms de serveurs inconnus comme des clés pointant vers une valeur ServerStruct.
La structure révisée ressemblerait à :
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
Avec l'ajout de balises JSON appropriées, nous pouvons analysez maintenant avec succès les données JSON dans cette structure améliorée.
En nous adaptant à la nature dynamique des données JSON à l'aide d'un map[string]ServerStruct et en adoptant les possibilités de champs sans clé avec des balises JSON, nous pouvons efficacement démêler le structure perplexe des données JSON imbriquées et extraire les informations souhaitées.
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!