Maison > développement back-end > Golang > Comment inclure des champs Struct intégrés dans la réponse JSON avec MongoDB dans Golang ?

Comment inclure des champs Struct intégrés dans la réponse JSON avec MongoDB dans Golang ?

Patricia Arquette
Libérer: 2024-11-09 11:01:02
original
695 Les gens l'ont consulté

How to Include Embedded Struct Fields in JSON Response with MongoDB in Golang?

Incorporation de structures dans Golang avec MongoDB

Dans Golang, l'intégration de structures est une technique permettant d'étendre les fonctionnalités d'une structure en l'imbriquant dans une autre structurer. Cependant, lorsqu'il s'agit de travailler avec des structures intégrées et MongoDB, certains défis peuvent survenir.

Le problème : exclure les champs imbriqués de la réponse JSON

Considérez la structure utilisateur suivante :

type User struct {
  Id      bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
  Name    string        `json:"name,omitempty" bson:"name,omitempty"`
  Secret  string        `json:"-,omitempty" bson:"secret,omitempty"`
}
Copier après la connexion

Le champ Secret est exclu de la représentation JSON en utilisant json:"-". Ceci est utile dans la plupart des cas où les informations secrètes ne doivent pas être divulguées.

Le dilemme : routes d'administration et structures intégrées

Pour permettre aux administrateurs d'accéder au champ secret , une structure adminUser est créée, qui inclut la structure User en tant que champ intégré :

type adminUser struct {
  User
  Secret  string        `json:"secret,omitempty" bson:"secret,omitempty"`
}
Copier après la connexion

Cependant, cela L'approche renvoie uniquement le champ Secret, car les champs Utilisateur intégrés sont ignorés.

La solution : bson Inline Flag

Pour résoudre ce problème, le package bson fournit un indicateur en ligne drapeau qui permet l'inclusion de champs intégrés dans la sérialisation JSON et le décodage de documents MongoDB.

type adminUser struct {
    User    `bson:",inline"`
    Secret  string `json:"secret,omitempty" bson:"secret,omitempty"`
}
Copier après la connexion

Avec cette modification, les champs Utilisateur (hors Secret) et le champ Secret dans adminUser sera inclus dans la réponse JSON et le document MongoDB.

Approche alternative

Alternativement, on pourrait envisager de supprimer le champ Secret de la structure User et incluez-le uniquement dans la structure adminUser. Cela simplifie le modèle de données et garantit que les secrets ne sont écrits et lus dans la base de données que par des administrateurs autorisés.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal