Я получаю большой двоичный объект JSON от API Kubernetes, который содержит тип, включающий подполе 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
}
Спасибо за вашу помощь!
Майкл