首页 > 后端开发 > Golang > `google.protobuf.Struct` 是在 Go 中通过 gRPC 发送动态 JSON 数据的最有效方法吗?

`google.protobuf.Struct` 是在 Go 中通过 gRPC 发送动态 JSON 数据的最有效方法吗?

Mary-Kate Olsen
发布: 2024-12-01 12:35:15
原创
857 人浏览过

Is `google.protobuf.Struct` the Most Efficient Way to Send Dynamic JSON Data via gRPC in Go?

“google/protobuf/struct.proto”是通过 GRPC 传输动态 JSON 的最佳方法吗?

背景:

您已经实现了 GRPC 服务器和客户端(两者都Go 中),正在寻求关于使用“golang/protobuf/struct”是否是传递动态 JSON 数据最有效的策略的指导。

解决方案:

基于提供的“User.proto”文件,利用“google.protobuf.Struct”似乎是一个声音

替代解决方案:

1. 自定义 Protobuf 结构**

建议将“Details”定义为 proto 文件中的结构,但这种方法需要额外的代码生成和维护,这可能很麻烦。

2. JSON转换和封装

在GRPC传输之前,将“Details”映射转换为JSON格式,将其封装为protobuf消息,并在服务器端反序列化是另一种选择。然而,这涉及额外的处理,并且比使用预构建的“Struct”类型效率较低。

Anuj 的解决方案:

虽然功能强大,但该解决方案有些复杂,包括手动 JSON 序列化和反序列化。

Luke 的解决方案:

这种替代方案很简洁,但仍然需要更多的转换,通过多种格式转换地图数据。

最佳方法:

利用 Go 中引入的“structpb”包的解决方案简化了 protobuf“Struct”实例的创建标准围棋地图。此方法具有以下优点:

  • 用于构造“Struct”实例的简化接口。
  • 内置支持将各种 Go 数据类型映射到“Struct”中的“Value”类型."
  • 高效处理,避免冗余

此方法与 client.go 文件中提供的示例一致,其中使用“structpb.NewStruct”函数直接从映射实例化“Struct”。

以上是`google.protobuf.Struct` 是在 Go 中通过 gRPC 发送动态 JSON 数据的最有效方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板