概要
プロトコル バッファー (Protobuf) は言語です- シリアル化のための中立、プラットフォーム中立の拡張可能なメカニズム構造化データ。 Protobuf を使用する場合、*.pb.go ファイルで生成された JSON タグからomitempty タグを削除する必要がある場合があります。この記事では、さまざまな方法を使用してこれを実現する方法について説明します。
grpc-gateway オプション
grpc-gateway を利用する場合、ServeMux の作成時に次のオプションを含めることで、 JSON マーシャリング中にデフォルト値が存在します:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
protobufパッケージ
grpc-gateway の外部では、google.golang.org/protobuf/encoding/protojson パッケージ (非推奨の github.com/golang/protobuf/jsonpb に置き換わります) を使用してプロトコルをマーシャリングできます。メッセージをバッファリングします。 EmitDefaults: true を設定して Marshaler 構造体を利用すると、デフォルト値が JSON 出力に含まれます:
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) // Error handling omitted }
以上がProtobuf で生成された JSON から「omitempty」タグを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。