Protocol buffers 在protobuf v2中使用映射
目前我在我的项目中使用protobuf版本2。到目前为止,所有的信息都非常有效;然而,我在尝试使用“地图”关键字时遇到了一个障碍 需要映射背后的TLDR用法是,我希望将一些JSON键/值对传递给我的服务器以进行查找,并将可能的数据日志传递给服务器(使用JSON消息接口) 我目前正在使用文档页面上推荐的向后兼容方法: 我想了解的是,为什么我的消息的以下声明(使用映射)无法编译?我正在使用protoc编译器的以下版本:“#protoc--version=>libprotoc 2.6.1”Protocol buffers 在protobuf v2中使用映射,protocol-buffers,Protocol Buffers,目前我在我的项目中使用protobuf版本2。到目前为止,所有的信息都非常有效;然而,我在尝试使用“地图”关键字时遇到了一个障碍 需要映射背后的TLDR用法是,我希望将一些JSON键/值对传递给我的服务器以进行查找,并将可能的数据日志传递给服务器(使用JSON消息接口) 我目前正在使用文档页面上推荐的向后兼容方法: 我想了解的是,为什么我的消息的以下声明(使用映射)无法编译?我正在使用protoc编译器的以下版本:“#protoc--version=>libprotoc 2.6.1” messa
message MapFieldEntry {
optional string key = 1;
optional string value = 2;
}
message Lookup {
repeated MapFieldEntry map_field = 1;
map<string, string> test_map = 2;
}
我尝试添加syntax=“proto2”;在顶部,但我仍然得到错误
编辑:
就像一张纸条;我遇到的问题是关于查找消息的第二个参数。第一个参数是我目前正在使用的解决方法。我发现其他人在git上也有类似问题: 答复是: 仅从v3.0.0开始支持映射语法。“proto2” 文档中所指的是语法版本,而不是protobuf版本 版本v3.0.0支持proto2语法和proto3语法,而 v2.6.1仅支持proto2语法。对于所有用户,建议 使用v3.0.0-beta-1而不是v2.6.1 看来要解决您的问题,您应该使用Protoc3,而不是2.6.1 并将您的
syntax=proto2
放在文件的顶部,精确地说,这就是您使用的proto2语法
你能试着让我知道这是否有效吗?这是一个有趣的问题,因为官方文件没有提到它。谢谢链接;很高兴我不是唯一一个误解protobuf 2文档的人。我想我现在会坚持使用向后兼容版本。
Expected "required", "optional", or "repeated".
Expected field name.