Suppression de la balise Omitempty des balises JSON générées dans GoLang Protobuf
Dans Google gRPC avec un proxy JSON, vous pouvez rencontrer un scénario dans lequel vous avez besoin pour supprimer les balises omitempty des structures générées dans les fichiers .pb.go. Cette exigence est nécessaire pour garantir la présence de valeurs par défaut lors du marshaling JSON.
Pour résoudre ce problème, vous pouvez mettre en œuvre les stratégies suivantes :
Pour les utilisateurs de grpc-gateway :
Ajoutez l'option suivante lors de la création de votre serveurmux :
gwmux := runtime.NewServeMux( runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{ OrigName: true, EmitDefaults: true, }), )
En dehors de grpc-gateway :
Utilisez le package google.golang.org/protobuf/encoding/protojson pour rassembler votre message Protobuf. Ce package a remplacé le package obsolète github.com/golang/protobuf/jsonpb.
func sendProtoMessage(resp proto.Message, w http.ResponseWriter) { w.Header().Set("Content-Type", "application/json; charset=utf-8") m := protojson.Marshaler{EmitDefaults: true} m.Marshal(w, resp) // Handling of potential errors is recommended }
En suivant ces approches, vous pouvez supprimer efficacement la balise omitempty des balises JSON générées dans GoLang Protobuf, garantissant ainsi l'inclusion des valeurs par défaut lors du marshaling JSON.
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!