duandai7601 2018-11-23 02:29
浏览 187

使用protobuf子字段解组JSON消息

I'm receiving a JSON blob from a Kubernetes API that contains a type that includes a protobuf subfield. Since that protobuf includes oneof fields, I have to use golang/protobuf/jsonpb and not encoding/json.

I've reproduced this simply here:

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"`
}

How can I unmarshal this message? I think I want something like this:

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
}

Thanks for your help!

Michael

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示