我正在从Kubernetes API接收一个JSON Blob,其中包含一个包含protobuf子字段的类型。由于该protobuf包含oneof
个字段,因此我必须使用golang/protobuf/jsonpb
而不是encoding/json
。
我在这里简单地复制了此内容:
client.proto
message Latency {
oneof latency_type {
StaticLatency static = 1;
NormalLatency normal = 2;
}
}
client.go :
type Metadata struct {
Name string `json:"name,omitempty"`
}
type LatencyWrapper struct {
Meta Metadata `json:"meta"`
Latency Latency `json:"latency"`
}
如何解组此消息?我想我想要这样的东西:
func (lw *LatencyWrapper) UnmarshalJSON(b []byte) error {
var parts map[string]string = Something()
json.Unmarshal(parts["meta"], &lw.meta)
jsonpb.Unmarshal(parts["latency"], &lw.latency)
return nil
}
感谢您的帮助!
迈克尔