ホームページ > バックエンド開発 > Golang > Go で Protobuf メッセージを生成するときに OmitEmpty JSON タグを防ぐにはどうすればよいですか?

Go で Protobuf メッセージを生成するときに OmitEmpty JSON タグを防ぐにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 22:55:12
オリジナル
848 人が閲覧しました

How Can I Prevent OmitEmpty JSON Tags When Generating Protobuf Messages in Go?

Go で OmitEmpty JSON タグを使用せずにプロト バフを生成する

JSON プロキシで gRPC を使用する場合、生成された構造体にomitempty タグが自動的に追加されます。 JSON ペイロードにはデフォルト値が含まれていないため、メッセージをマーシャリングするときに問題が発生する可能性があります。

これを克服するには、ServeMux に次のオプションを追加することを検討してください。

gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
ログイン後にコピー

これにより、生成された JSON にはデフォルト値が常に存在します。

あるいは、プロトコル バッファ メッセージをマーシャリングするための google.golang.org/protobuf/encoding/protojson パッケージ。このパッケージでは、エンコード プロセスをより詳細に制御でき、デフォルト値を出力するように指定できます:

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) // Check for errors here
}
ログイン後にコピー

注: google.golang.org/protobuf は、非推奨の github に置き換わりました。 .com/golang/protobuf とその jsonpb パッケージ。

以上がGo で Protobuf メッセージを生成するときに OmitEmpty JSON タグを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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