Heim >Backend-Entwicklung >Golang >Wie entferne ich das „omitempty'-Tag aus Protobuf-generiertem JSON?
Einführung
Protocol Buffers (Protobuf) ist eine Sprache -neutraler, plattformneutraler erweiterbarer Mechanismus zur Serialisierung strukturierter Daten. Bei der Arbeit mit Protobuf kann es erforderlich sein, das omitempty-Tag aus den in den *.pb.go-Dateien generierten JSON-Tags zu entfernen. In diesem Artikel wird erläutert, wie dies mit verschiedenen Methoden erreicht werden kann.
grpc-gateway-Option
Wenn Sie grpc-gateway verwenden, wird dies durch Einschließen der folgenden Option beim Erstellen des ServeMux sichergestellt Beim JSON-Marshalling sind Standardwerte vorhanden:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
protobuf Paket
Außerhalb von grpc-gateway kann das Paket google.golang.org/protobuf/encoding/protojson (das jetzt das veraltete Paket github.com/golang/protobuf/jsonpb ersetzt) zum Marshallen des Protokolls verwendet werden Puffernachrichten. Durch die Verwendung der Marshaler-Struktur mit dem Satz EmitDefaults: true werden Standardwerte in die JSON-Ausgabe einbezogen:
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) // Error handling omitted }
Das obige ist der detaillierte Inhalt vonWie entferne ich das „omitempty'-Tag aus Protobuf-generiertem JSON?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!