首頁 > 後端開發 > Golang > 如何從 GoLang Protobuf JSON 輸出中刪除 `omitempty` 標籤?

如何從 GoLang Protobuf JSON 輸出中刪除 `omitempty` 標籤?

DDD
發布: 2024-12-30 05:55:09
原創
356 人瀏覽過

How to Remove `omitempty` Tags from GoLang Protobuf JSON Output?

從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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板