將JSON 解組到Protobuf 結構欄位:解決資料欄位空問題
嘗試將JSON 資料解組到google 類型的protobufgoogle字段時.protobuf.Value,您可能會遇到protobuf 結構中的Data 字段設置為nil 的情況。這個問題是由於標準庫的encoding/json套件和protobuf Value fields的具體要求不相容而產生的。
要解決這個問題,應該使用更合適的函式庫來進行解組。 Google 的 protobuf 函式庫提供了一種更強大且客製化的方法來處理特定於 protobuf 的資料類型。這是使用protojson.Unmarshal 修正後的程式碼:
<code class="go">import ( "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" "io" ) req := &proto.JobCreateRequest{} bytes, err := io.ReadAll(r.Body) if err != nil { return err } err = protojson.Unmarshal(bytes, req) if err != nil { return err }</code>
透過利用protojson.Unmarshal 而不是encoding/json 包,您可以有效地將JSON 資料轉換為protobuf 結構體,確保Data 欄位正確人口稠密。產生的 JobCreateRequest 結構將包含名稱、描述和資料欄位的預期值。
以上是將 JSON 解組到 Protobuf 結構時如何解決空資料欄位問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!