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