“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”实例的创建标准围棋地图。此方法具有以下优点:
此方法与 client.go 文件中提供的示例一致,其中使用“structpb.NewStruct”函数直接从映射实例化“Struct”。
以上是`google.protobuf.Struct` 是在 Go 中通过 gRPC 发送动态 JSON 数据的最有效方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!