web-dev-qa-db-fra.com

Comment définir plusieurs tags de nom dans une structure

J'ai besoin d'obtenir un élément d'une base de données Mongo, alors j'ai défini une structure comme celle-ci

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

Maintenant, j'ai aussi besoin de l'encoder au format JSON, mais il encode les champs en majuscules (je reçois PageId au lieu de pageId), donc j'ai également besoin de 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 cela peut-il être fait, définir plusieurs balises de nom dans une structure?

113
Sofia

Il est dit dans la documentation du paquet reflect:

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 de contrôle autres que des espaces (U + 0020 ''), guillemet (U + 0022 '"') et deux points (U + 003A ':'). Chaque valeur est citée. using U + 0022 '"' caractères et la syntaxe littérale de chaîne Go.

Ce que vous devez faire est d'utiliser un espace au lieu d'une virgule comme séparateur de chaîne de balise.

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

Merci pour la réponse acceptée.

Ci-dessous est juste pour les paresseux 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"`
}
56
Benny