Omitempty-Tag aus generierten JSON-Tags in GoLang Protobuf entfernen
In Google gRPC mit einem JSON-Proxy stoßen Sie möglicherweise auf ein Szenario, in dem Sie dies benötigen um die Omitempty-Tags aus den generierten Strukturen in .pb.go-Dateien zu entfernen. Diese Anforderung entsteht, um das Vorhandensein von Standardwerten während des JSON-Marshallings sicherzustellen.
Um dieses Problem zu beheben, können Sie die folgenden Strategien implementieren:
Für grpc-gateway-Benutzer:
Fügen Sie beim Erstellen Ihres Servemux die folgende Option hinzu:
gwmux := runtime.NewServeMux( runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{ OrigName: true, EmitDefaults: true, }), )
Außerhalb von grpc-gateway:
Verwenden Sie das Paket google.golang.org/protobuf/encoding/protojson zum Marshallen Ihrer Protobuf-Nachricht. Dieses Paket hat das veraltete Paket github.com/golang/protobuf/jsonpb ersetzt.
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 }
Durch Befolgen dieser Ansätze können Sie das omitempty-Tag effektiv aus den generierten JSON-Tags in GoLang Protobuf entfernen und so die Einbeziehung sicherstellen der Standardwerte beim JSON-Marshalling.
Das obige ist der detaillierte Inhalt vonWie entferne ich „omitempty'-Tags aus der JSON-Ausgabe von GoLang Protobuf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!