Maison  >  Article  >  développement back-end  >  Comment analyser des données JSON avec des structures dynamiques imbriquées dans Go ?

Comment analyser des données JSON avec des structures dynamiques imbriquées dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 16:25:02210parcourir

How to Parse JSON Data with Nested Dynamic Structures in Go?

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 :

  • Comment analyser/déserliser un JSON dynamique dans Golang
  • Comment désorganiser JSON avec des noms de champs inconnus à structurer dans Golang ?
  • Désassembler JSON avec des champs inconnus
  • Désassembler la chaîne JSON en une structure qui possède un élément de la structure elle-même

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