Suppression des balises Omitempty du JSON généré par Protobuf
Lors de la génération de classes Protobuf à utiliser avec un proxy JSON, vous pouvez rencontrer les balises omitempty sur les structures générées. Ces balises suppriment les champs vides lors du marshaling JSON, ce qui peut être indésirable dans certains scénarios.
Pour supprimer les balises omitempty des structures générées :
Utilisation de grpc-gateway
Si vous utilisez grpc-gateway, vous pouvez désactiver le comportement d'omitempty en spécifiant l'option suivante lorsque créer votre servemux :
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
En dehors de grpc-gateway
Pour rassembler votre message Protobuf sans le comportement d'omitempty en dehors de grpc-gateway, utilisez google.golang Package .org/protobuf/encoding/protojson au lieu du package encoding/json standard package :
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) // Check for errors here }
Remarque :
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!