「google/protobuf/struct.proto」是透過 GRPC 傳輸動態 JSON 的最佳方法嗎?
使用 google/protobuf/struct .proto 是透過以下方式傳輸動態 JSON 物件的有效方法GRPC。
使用 google/protobuf/struct
google/protobuf/struct.proto 提供了一個通用資料結構,用於表示 Protobuf 訊息中的 JSON 物件。它包括兩種關鍵訊息類型:
動態JSON
動態JSON是指儲存為字串的非結構化或靈活資料。如果您的資料遵循預先定義的架構,則定義自訂 Protobuf 訊息類型可能會更有效。
Proto 檔案
您的原型檔案 (User.proto) 使用 google/ protobuf/struct.proto 聲明 SendJsonRequest 訊息。 Details 欄位的類型為 Struct,允許傳入動態 JSON 資料。
客戶端程式碼
您的客戶端程式碼使用 structpb 建立 structpb.Struct 的實例.NewStruct(),將map[string]interfacet
替代解決方案
Anuj 的解決方案
此解決方案更為複雜,需要手動將每個映射條目轉換為structpb.Value,需要更多代碼
Luke的解決方案
雖然更簡潔,但該解決方案仍涉及從 map 轉換為 bytes,然後轉換為 structpb.Struct。
來自不同方法的解決方案
建議的解決方案使用structpb.NewStruct() 直接從map建立Struct對象,省去中間轉換。
結論
使用 google/protobuf/struct.proto 可以是處理非結構化或靈活資料時透過 GRPC 傳輸動態 JSON 的合適選項。但是,如果您的資料遵循特定架構,則定義自訂 Protobuf 訊息可能會提高效率和類型安全性。
以上是`google/protobuf/struct.proto` 是透過 gRPC 發送動態 JSON 資料的最佳方式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!