Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用protobuf子字段解组JSON消息_Json_Go_Protocol Buffers - Fatal编程技术网

用protobuf子字段解组JSON消息

用protobuf子字段解组JSON消息,json,go,protocol-buffers,Json,Go,Protocol Buffers,我从Kubernetes API接收到一个JSON blob,该API包含一个包含protobuf子字段的类型。由于protobuf包含一个字段,因此我必须使用golang/protobuf/jsonpb而不是encoding/json 我在这里简单地复制了这一点: 客户端.proto message Latency { oneof latency_type { StaticLatency static = 1; NormalLatency normal = 2; } }

我从Kubernetes API接收到一个JSON blob,该API包含一个包含protobuf子字段的类型。由于protobuf包含
一个
字段,因此我必须使用
golang/protobuf/jsonpb
而不是
encoding/json

我在这里简单地复制了这一点:

客户端.proto

message Latency {
  oneof latency_type {
    StaticLatency static = 1;
    NormalLatency normal = 2;
  }
}
客户端。转到

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
}
谢谢你的帮助

迈克尔