Maison > développement back-end > Golang > Comment désorganiser le JSON imbriqué avec des clés dynamiques à l'aide de Go ?

Comment désorganiser le JSON imbriqué avec des clés dynamiques à l'aide de Go ?

DDD
Libérer: 2024-11-22 06:52:15
original
245 Les gens l'ont consulté

How to Unmarshal Nested JSON with Dynamic Keys Using Go?

Désorganisation du JSON imbriqué avec des clés dynamiques

Dans les structures JSON complexes, la rencontre d'objets imbriqués avec des clés changeant dynamiquement peut poser des problèmes lors de la désorganisation. Considérez les données JSON suivantes :

{
  "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
}
Copier après la connexion

Solution :

Pour désassembler efficacement un tel JSON, envisagez d'utiliser un map[string]ServerStruct pour l'objet imbriqué avec des clés dynamiques . Cette approche permet l'inclusion de plusieurs serveurs avec des noms inconnus.

Voici un exemple de structure mise à jour :

type YourStruct struct {
    Success bool
    ResponseMS int
    Servers map[string]*ServerStruct
}

type ServerStruct struct {
    Application string
    Owner string
    [...]
}
Copier après la connexion

En ajoutant des balises JSON, vous pouvez demander au décodeur de mapper un JSON spécifique champs aux champs de structure correspondants. Voici les balises mises à jour :

type YourStruct struct {
    Success  `json:"success"`
    ResponseMS `json:"response_ms"`
    Servers  `json:"-"`
}

type ServerStruct struct {
    Application string `json:"application"`
    Owner string `json:"owner"`
    [...]
}
Copier après la connexion

La balise json:"-" sur le champ "Serveurs" garantit que le décodeur ignore le mappage des champs JSON directement vers le champ "ServerStruct". Au lieu de cela, il mappe les champs sur un map[string]ServerStruct.

Cette approche fournit une solution flexible pour désorganiser les objets JSON imbriqués avec des clés dynamiques, vous permettant d'accéder facilement aux données de chaque objet serveur.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal