Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-11-22 06:52:15188parcourir

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
}

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
    [...]
}

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"`
    [...]
}

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!

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