從GoLang Protobuf 產生的JSON 標籤中刪除Omitempty 標籤
在使用JSON 代理的Google gRPC 中,您可能會遇到所需的場景從.pb.go 檔案中產生的結構中刪除omitempty 標籤。出現此要求是為了確保 JSON 封送期間存在預設值。
要解決此問題,您可以實施以下策略:
對於grpc-gateway 用戶:
創建您的時添加以下選項servemux:
gwmux := runtime.NewServeMux( runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{ OrigName: true, EmitDefaults: true, }), )
grpc-gateway以外:
利用 google.golang.org/protobuf/encoding/protojson 套件來封送 Protobuf 訊息。該包取代了已棄用的 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 }
透過遵循這些方法,您可以有效地從 GoLang Protobuf 產生的 JSON 標籤中刪除 omitempty 標籤,確保包含JSON 封送期間的預設值。
以上是如何從 GoLang Protobuf JSON 輸出中刪除 `omitempty` 標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!