Распаковка сообщения JSON с подполями protobuf - PullRequest
0 голосов
/ 23 ноября 2018

Я получаю большой двоичный объект 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
}

Спасибо за вашу помощь!

Майкл

...