golangprotobuf枚举值json解析
json值的类型有哪些现有 protobuf 数据结构
enum Phase {
Pending = 1;
Running = 0;
}
message Status {
Phase status = 1;
}
实际⽣成代码,对应的类型
type Phase int32
const(
Phase_Pending Phase =0
Phase_Running Phase =1
}
但我们希望解析的数据如下
{
"status":"Pending"
}
常规的 encoding/json 包是⽆法跨类型解析的,因为 json 数据为 string 类型
这个时候就要⽤到 github/golang/protobuf/jsonpb 这个包来解析
f, err := os.Open(path)
if err != nil {
return nil, err
}
json := jsonpb.Unmarshaler{}
wf := &workflow.Workflow{}
err = json.Unmarshal(f, wf)
if err != nil {
return nil, err
}
通过 jsonpb 可以解析 json 到 protobuf 的枚举值
如果希望兼容 json 库,则需要重写对象的 MarshalJSON/UnmarshalJSON ⽅法,⾥⾯使⽤ jsonpb 包来操作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论