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 サイトの他の関連記事を参照してください。