首頁 >後端開發 >Golang >將 JSON 解組到 Protobuf 結構時如何解決空資料欄位問題?

將 JSON 解組到 Protobuf 結構時如何解決空資料欄位問題?

Barbara Streisand
Barbara Streisand原創
2024-10-28 07:30:02538瀏覽

How to Resolve Null Data Field Issue When Unmarshaling JSON to Protobuf Struct?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn