177 votes

Comment définir plusieurs étiquettes de nom dans une structure

J'ai besoin d'obtenir un élément d'une base de données mongo, donc j'ai défini une structure comme ceci

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}

Maintenant, j'ai aussi besoin de l'encoder en JSON, mais il encode les champs en majuscules (j'obtiens PageId au lieu de pageId) donc je dois aussi définir des balises de champ pour JSON. J'ai essayé quelque chose comme ça mais ça n'a pas marché :

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

Alors comment faire, définir plusieurs étiquettes de nom dans une structure ?

330voto

ANisus Points 10898

Ce que vous devez faire, c'est utiliser des espaces au lieu de virgules comme séparateurs de chaînes de balises.

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

Il est dit dans le la documentation de la reflect paquet :

Par convention, les chaînes de balises sont une concaténation de paires clé : "valeur" éventuellement séparées par des espaces. Chaque clé est une chaîne non vide composée de caractères non contrôlés autres que l'espace (U+0020 ' '), le guillemet (U+0022 '"') et les deux points (U+003A ':'). Chaque valeur est citée en utilisant les caractères U+0022 '"' et la syntaxe de littéral de chaîne de Go.

91voto

Benny Points 8529

Merci pour la réponse acceptée.

Ce qui suit est juste pour les personnes paresseuses comme moi.

INCORRECT

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

CORRECT

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"pageId"`
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X