如何解决研究奇怪的协议缓冲区消息解码和编码
我正在尝试找出一种方法来创建.proto定义,该定义可以创建和解码如下所示的消息:
parent_field {
carrier_field { (field id: 1)
subfield_1: 10 (field id: 1)
subfield_2: 20 (field id: 2)
}
carrier_field: "string" (field id: 1)
}
这意味着在相同的字段标识符下,我可以获取子消息或字符串。
我尝试过类似的事情:
message MessageWrapper {
message ParentField {
message SubMessage {
....
}
repeated SubMessage carrier_field = 1
}
ParentField parent_field = 1
}
但是当我尝试解码消息时,我得到了:
# protoc --experimental_allow_proto3_optional --decode MessageWrapper proto_definitions/test.proto < test.buff
Failed to parse input.
.proto定义应该如何能够解码和编码上面显示的消息?
解决方法
唯一的方法是将carrier_field
设为bytes
字段,然后将其分别解码为字符串或protobuf消息。坦率地说,我不建议这样做:最好使用带有不同字段编号的oneof
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。