Les structures dynamiques imbriquées JSON vont au décodage
Dans ce scénario, la réponse JSON contient des clés dynamiques dans l'objet "sms" imbriqué. Les méthodes de décodage de structure conventionnelles échoueront en raison de numéros de téléphone inconnus comme clés.
Solution : cartes et gestion dynamique des clés
Pour désérialiser efficacement ces données, une structure de données cartographiques est employé. Le code modifié ci-dessous introduit une map[string]SMSPhone pour modéliser l'objet "sms" :
type SMSPhone struct { Status string `json:"status"` StatusCode int `json:"status_code"` StatusText string `json:"status_text"` } type SMSSendJSON struct { Status string `json:"status"` StatusCode int `json:"status_code"` Sms map[string]SMSPhone `json:"sms"` Balance float64 `json:"balance"` }
Processus de démarshaling
Avec cette carte en place, le démarshaling Le processus peut désormais gérer correctement les numéros de téléphone dynamiques :
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) }
Exemple Sortie
La carte des résultats contiendra les numéros de téléphone sous forme de clés et leurs structures SMSPhone associées :
{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}
Cette approche permet un décodage efficace des réponses JSON avec des structures imbriquées dynamiques.
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!