ホームページ > バックエンド開発 > Golang > 「google/protobuf/struct.proto」は gRPC 経由で動的 JSON データを送信する最良の方法ですか?

「google/protobuf/struct.proto」は gRPC 経由で動的 JSON データを送信する最良の方法ですか?

Susan Sarandon
リリース: 2024-12-03 15:10:10
オリジナル
631 人が閲覧しました

Is `google/protobuf/struct.proto` the Best Way to Send Dynamic JSON Data via gRPC?

「google/protobuf/struct.proto」は GRPC 経由で動的 JSON を送信するための最適な方法ですか?

google/protobuf/struct の使用.proto は、動的 JSON オブジェクトを送信する効果的な方法です。 GRPC.

google/protobuf/struct の使用

google/protobuf/struct.proto は、Protobuf メッセージで JSON オブジェクトを表すための汎用データ構造を提供します。これには 2 つの主要なメッセージ タイプが含まれます。

  • 値 - 個々の JSON 値 (文字列、数値、リストなど) を表します
  • 構造体 - フィールドと値のペアのコレクションを表します

動的JSON

動的 JSON は、文字列として保存された非構造化データまたは柔軟なデータを指します。データが事前定義されたスキーマに従っている場合は、カスタム Protobuf メッセージ タイプを定義する方が効率的である可能性があります。

Proto File

Proto ファイル (User.proto) は google/ を使用します。 protobuf/struct.proto を使用して SendJsonRequest メッセージを宣言します。詳細フィールドは Struct 型で、動的な JSON データを渡すことができます。

クライアント コード

クライアント コードは、structpb のインスタンスを作成します。structpb を使用して Struct .NewStruct()、map[string]interface{} を Struct に変換します。 object.

代替ソリューション

Anuj のソリューション

このソリューションはより複雑で、各マップ エントリを手動でオブジェクトに変換する必要があります。 structpb.Value、より多くのコードが必要

Luke の解決策

より簡潔ですが、この解決策にはマップからバイトへの変換、そして structpb.Struct への変換が含まれます。

別のアプローチからの解決策

提案された解決策では次のようになります。 structpb.NewStruct() を使用すると、マップから Struct オブジェクトを直接作成できるため、中間変換の必要がなくなります。

結論

google/protobuf/struct.proto を使用すると、次のことができます。非構造化データまたは柔軟なデータを扱う場合に、GRPC 経由で動的 JSON を送信するのに適したオプションです。ただし、データが特定のスキーマに従っている場合は、カスタム Protobuf メッセージを定義すると効率と型安全性が向上する可能性があります。

以上が「google/protobuf/struct.proto」は gRPC 経由で動的 JSON データを送信する最良の方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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