從Protobuf 生成的JSON 中刪除Omitempty 標籤
生成與JSON 代理一起使用的Protobuf 類時,您可能會遇到omitempty標籤生成的結構體。這些標籤在 JSON 編組期間抑制空字段,這在某些情況下可能是不受歡迎的。
要從產生的結構中刪除omitempty 標籤:
使用grpc-gateway
如果您使用grpc-gateway,您可以透過指定來禁用omitempty 行為建立servermux時使用以下選項:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
grpc-gateway 之外
要在grpc-gateway 之外封送Protobuf 訊息而不出現omitempty 行為,請使用omi google.golang.org/protobuf/encoding/protojson包而不是標準的encoding/json包:
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 }
注意:
以上是如何從 Protobuf 產生的 JSON 中刪除 `omitempty` 標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!