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?
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"`
}
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"`
}