ホームページ > バックエンド開発 > Golang > GoLang Protobuf JSON 出力から `omitempty` タグを削除するにはどうすればよいですか?

GoLang Protobuf JSON 出力から `omitempty` タグを削除するにはどうすればよいですか?

DDD
リリース: 2024-12-30 05:55:09
オリジナル
356 人が閲覧しました

How to Remove `omitempty` Tags from GoLang Protobuf JSON Output?

GoLang Protobuf で生成された JSON タグから Omitempty タグを削除する

JSON プロキシを使用した Google gRPC では、必要なシナリオが発生する可能性があります。 .pb.go ファイル内で生成された構造体からomitemptyタグを削除します。この要件は、JSON マーシャリング中にデフォルト値が存在することを保証するために発生します。

この問題に対処するには、次の戦略を実装できます:

grpc-gateway ユーザーの場合:

作成時に次のオプションを追加します。 servemux:

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

grpc-gateway の外側:

Protobuf メッセージをマーシャリングするために google.golang.org/protobuf/encoding/protojson パッケージを利用します。このパッケージは、非推奨の github.com/golang/protobuf/jsonpb パッケージを置き換えました。

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) // Handling of potential errors is recommended
}
ログイン後にコピー

これらのアプローチに従うことで、GoLang Protobuf で生成された JSON タグからomitempty タグを効果的に削除し、確実に含めることができます。 JSON マーシャリング中のデフォルト値。

以上がGoLang Protobuf JSON 出力から `omitempty` タグを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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