Décodage Go des structures dynamiques imbriquées JSON
Cette discussion explore le défi de l'analyse des données JSON avec des structures dynamiques imbriquées dans Go.
Problème :
Les exemples de données JSON contiennent une structure imbriquée avec des clés dynamiques, telles que des numéros de téléphone, comme indiqué ci-dessous :
{ "status": "OK", "status_code": 100, "sms": { "79607891234": { "status": "ERROR", "status_code": 203, "status_text": "Нет текста сообщения" }, "79035671233": {...}, "79105432212": {...} }, "balance": 2676.18 }
L'exemple de code fourni tente d'utiliser une liste fixe de numéros de téléphone pour modéliser la structure imbriquée, mais cette approche échoue en raison de la nature dynamique des clés de numéro de téléphone.
Solution :
Pour gérer des structures dynamiques imbriquées, il faut utiliser une carte au lieu d'une liste fixe pour modéliser les données. Pour cet exemple, les structures de données suivantes peuvent être utilisées :
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"` }
Dans cette structure mise à jour, map[string]SMSPhone est utilisé pour représenter l'objet "sms" imbriqué, où les clés de la carte correspondent à la dynamique numéros de téléphone.
Pour désorganiser les données JSON dans ces structures, le code suivant peut être utilisé :
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) } fmt.Printf("%+v", result)
Le résultat sera une structure Go avec une carte contenant le numéro de téléphone dynamique imbriqué data.
Les questions connexes présentant l'utilisation de cartes pour les structures dynamiques dans Go incluent :
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!