对于可变类型的json数据,如何反序列化到protobuf?
通过API请求回来的数据,相同字段名的值可能是不同的类型
{
"data": "data_string"
}
或者
{
"data": 123
}
我定义了如下的proto message
message Data {
google.protobuf.Any data = 1;
}
生成对应的golang结构体
type Data struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Data *any.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}
那使用什么反序列化可以把上面的json数据解析到这个对应的结构体中?
如果我的message定义的不正确,那么怎么定义message和怎么反序列化才能将值类型不同的数据正确解析?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@INFOT Any 的使用示例。
假设存在如下的数据结构:
当
type
值为INFO
时,data
的结构为:{ "msg": string; }
;当type
值为ERROR
时,data
的结构为:{ "code": string; "err": string; "reason": string; }
。那么,proto 就可以定义为:
传输时可以(伪代码):