ホームページ > バックエンド開発 > Golang > JSON を Protobuf 構造体にアンマーシャリングする際の Null データ フィールドの問題を解決するにはどうすればよいですか?

JSON を Protobuf 構造体にアンマーシャリングする際の Null データ フィールドの問題を解決するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-28 07:30:02
オリジナル
528 人が閲覧しました

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

Protobuf 構造体フィールドへの JSON のアンマーシャリング: データ フィールド Null の問題の解決

JSON データをタイプ google の protobuf struct フィールドにアンマーシャリングしようとしたとき.protobuf.Value を使用すると、protobuf 構造体の Data フィールドが nil に設定される状況が発生する可能性があります。この問題は、標準ライブラリのエンコーディング/json パッケージと protobuf 値フィールドの特定の要件との間の非互換性により発生します。

この問題を解決するには、アンマーシャリングにより適切なライブラリを使用する必要があります。 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>
ログイン後にコピー

encoding/json パッケージの代わりに protojson.Unmarshal を利用することで、JSON データを protobuf 構造体に効果的に変換し、Data フィールドが正しく設定されるようにすることができます。人が住んでいます。結果の JobCreateRequest 構造体には、名前、説明、データ フィールドの期待値が含まれます。

以上がJSON を Protobuf 構造体にアンマーシャリングする際の Null データ フィールドの問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート