Maison >développement back-end >Golang >Comment convertir une structure Go en carte en utilisant des balises JSON comme clés ?

Comment convertir une structure Go en carte en utilisant des balises JSON comme clés ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 20:54:15212parcourir

How to Convert a Go Struct to a Map Using JSON Tags as Keys?

Conversion d'une structure en carte dans Golang avec des clés JSON

Cette question recherche une méthode pour convertir une structure Golang en carte, en conservant les balises JSON comme clés dans la carte résultante . Initialement, les réponses ont été explorées à l'aide du package Reflect.

Une solution alternative est fournie par le package structs (https://github.com/fatih/structs) qui offre des fonctions complètes pour travailler avec des structures :

  • ConvertToMap : convertit une structure en map
  • ExtractFields : obtient une tranche de noms de champs à partir d'une structure
  • ExtractValues : extrait une tranche de valeurs de champ d'une structure
  • IsStruct : Vérifie si une interface fournie est une structure ou un pointeur vers une structure
  • IsInitialized : Vérifie si une structure est initialisée

Le package structs prend en charge les champs anonymes et les structures imbriquées, et permet de filtrer des éléments spécifiques champs à l’aide de balises de champ. Par exemple :

type Server struct {
    Name    string  `json:"server_name"`
    ID      int32   `json:"server_id"`
    Enabled bool     `json:"is_enabled"`
}

s := &Server{
    Name:    "gopher",
    ID:      123456,
    Enabled: true,
}

// {"server_name": "gopher", "server_id": 123456, "is_enabled": true}
m := structs.Map(s)

Dans cet exemple, les balises json sont utilisées comme clés de carte, produisant une représentation cartographique conforme à JSON de la structure. Le package structs fournit un outil polyvalent pour gérer les structures et les convertir en cartes, répondant ainsi efficacement à la demande d'origine.

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