通过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和怎么反序列化才能将值类型不同的数据正确解析?
@INFOT Any 的使用示例。
假设存在如下的数据结构:
当
type
值为INFO
时,data
的结构为:{ "msg": string; }
;当type
值为ERROR
时,data
的结构为:{ "code": string; "err": string; "reason": string; }
。那么,proto 就可以定义为:
传输时可以(伪代码):