使用protobuf子字段解组JSON消息

时间:2018-11-23 02:29:58

标签: json go protocol-buffers

我正在从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
}

感谢您的帮助!

迈克尔

0 个答案:

没有答案