gpt4 book ai didi

go - Protocol Buffer : Send arbitrary structure over GRPC

转载 作者:IT王子 更新时间:2023-10-29 02:19:56 25 4
gpt4 key购买 nike

我的目标是创建一个 API 来接收 JSON 对象(嵌套和任意性质),并将它们打包到 google/protobuf/struct.proto构造并使用 GRPC 发送它们。没事,不错jsonpb库涵盖了解码过程。

问题出现在GRPC服务端,接收端,为了方便使用,它把struct.proto对象解包成一个普通的golang数据结构,所以变成了map[string]interface{} , 与其他各种嵌套对象。

因此,当我尝试将对象转换回 struct.proto 以将其发送回客户端时,几乎没有选择。我发现了一个使用反射的转换器,它有一个我无法完全捕捉到的错误(与无法区分数据类型有关,它将嵌套的东西视为接口(interface){}),this one .

在我的头上敲了几个小时之后,我开始怀疑这是否是最好的方法。我需要将 struct.proto 对象转换为方便的对象并将它们转换回来,有没有更好的方法可以在保持嵌套功能的同时尽可能快地进行转换?

奇怪的是, struct.proto 很容易以一种方式转换而很难做相反的事情。一定是因为提取对象元数据的唯一方法是通过反射。缺乏泛型使它变得更加困难。

使用 JSON 对性能非常不利,gob 不是一种选择,因为协议(protocol)必须尽可能通用。我能想到的最后一次机会是找到另一个编码器并通过 protobuf 将数据作为原始字节发送,然后在服务器中对其进行解码。

欢迎任何帮助,谢谢。

编辑 1:

我想最后我将不得不在 protobuf 定义中实现多个编码协议(protocol)和一个字节数组的可能性,所以服务器和客户端以他们可以支持的最快速度进行协商......这将允许我实现它gob 和 jbson 作为后备。评论?

最佳答案

grpc 服务器应该按照定义将字节解包到 go 结构中 here .你能提供更多关于你为什么看到的信息map[string]interface{} ?

关于go - Protocol Buffer : Send arbitrary structure over GRPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com