Entfernen von Omitempty-Tags aus Protobuf-generiertem JSON
Beim Generieren von Protobuf-Klassen für die Verwendung mit einem JSON-Proxy können Sie auf die Omitempty-Tags stoßen die generierten Strukturen. Diese Tags unterdrücken leere Felder beim JSON-Marshalling, was in bestimmten Szenarien unerwünscht sein kann.
So entfernen Sie die omitempty-Tags aus den generierten Strukturen:
Verwenden von grpc-gateway
Wenn Sie grpc-gateway verwenden, können Sie das Omitempty-Verhalten deaktivieren, indem Sie die folgende Option angeben Erstellen Ihres Servemux:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
Außerhalb von grpc-gateway
Um Ihre Protobuf-Nachricht ohne das omitempty-Verhalten außerhalb von grpc-gateway zu marsallieren, verwenden Sie google.golang .org/protobuf/encoding/protojson-Paket anstelle des Standard-Encoding/json-Pakets Paket:
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 }
Hinweis:
Das obige ist der detaillierte Inhalt vonWie entferne ich „omitempty'-Tags aus Protobuf-generiertem JSON?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!