如何解决Cli生成协议缓冲区
在我的test.proto文件中,如下所示,即消息HTML中没有字段,如何为消息Page的_html字段设置值?
message HTML{
enum Type {
NO_TYPE = 0;
HTML5 = 1;
XHTML = 2;
}
}
message Page{
optional HTML _html = 1;
}
如何设置值?
echo _html : **???** | protoc --encode=Page test.proto > binary.data
https://medium.com/@at_ishikawa/cli-to-generate-protocol-buffers-c2cfdf633dce
解决方法
如何设置值?
如您所定义的那样定义时不能。消息HTML
仅包含一个枚举的定义,而没有实际字段。您可以在消息HTML
中添加一个字段,也可以在Page
中将类型定义为HTML.Type
,而不仅仅是HTML
:
test.proto:
message HTML{
enum Type {
NO_TYPE = 0;
HTML5 = 1;
XHTML = 2;
}
}
message Page{
optional HTML.Type _html = 1;
}
,然后创建一个文件test.txt:
_html: HTML5
您可以这样创建一个二进制文件:
protoc --experimental_allow_proto3_optional --encode Page test.proto < test.txt > binary.data
并将其解码:
protoc --experimental_allow_proto3_optional --decode Page test.proto < binary.data
最后一条命令打印:
_html: HTML5
除枚举定义外,HTML
消息是Empty
message,甚至以predefined message的形式存在:
//可以重复使用的通用空消息,以避免定义重复的消息
// API中的空消息。一个典型的例子是将其用作请求
//或API方法的响应类型。
//Empty
的JSON表示是空的JSON对象{}
。
消息为空{}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。