Maison >développement back-end >Golang >Comment décoder JSON avec des clés imbriquées dynamiques dans Go ?

Comment décoder JSON avec des clés imbriquées dynamiques dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-25 12:01:15804parcourir

How to Decode JSON with Dynamic Nested Keys in Go?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn