簡介
Protocol Buffers>Proto語言-中立、平台中立的可擴展機制,用於序列化結構化資料。使用 Protobuf 時,可能需要從 *.pb.go 檔案中產生的 JSON 標籤中刪除 omitempty 標籤。本文探討如何使用各種方法來實現此目的。
grpc-gateway 選項
如果使用 grpc-gateway,在建立 ServeMux 時包含以下選項將確保JSON封送過程中存在預設值:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
protobuf套件
grpc-gateway 之外,可以使用google.golang.org/protobuf/encoding/protojson包(現在替換已棄用的github.com/golang/protobuf/jsonpb)來編組協議緩衝訊息。透過使用具有 EmitDefaults: true 設定的 Marshaler 結構,預設值將包含在 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) // Error handling omitted }
以上是如何從 Protobuf 產生的 JSON 中刪除「omitempty」標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!