当前位置: 首页 > 知识库问答 >
问题:

在protobuf v2中使用贴图

林富
2023-03-14

目前,我在项目中使用protobuf版本2。到目前为止,所有的信息都很有效;然而,我在尝试使用“map”关键字时遇到了一个障碍。

需要映射背后的TLDR用法是,我想将一些JSON键/值对传递给服务器进行查找,并将可能的数据日志传递给服务器(使用JSON消息接口)。

我目前正在使用文档页面上推荐的向后兼容方法:https://developers.google.com/protocol-buffers/docs/proto#maps

我想了解的是,为什么我的消息的以下声明(使用映射)无法编译?我正在使用protoc编译器的以下veriosn:“#protoc--版本=

message MapFieldEntry {
  optional string key = 1;
  optional string value = 2;
}

message Lookup {
  repeated MapFieldEntry map_field = 1;
  map<string, string> test_map = 2;
}

我收到的错误如下(考虑到地图功能的文档,这些错误对我来说没有意义):

Expected "required", "optional", or "repeated".
Expected field name.

我尝试添加语法=“proto2”;在顶部,但我仍然得到错误。

编辑:作为注释;我遇到的问题是关于查找消息的第二个参数。第一个论点是我目前正在使用的变通方法。

共有1个答案

闾丘鸣
2023-03-14

我发现其他人在git上有类似的问题:https://github.com/google/protobuf/issues/799

回答是:

仅从v3.0.0开始支持maps语法。文档中的“proto2”指的是语法版本,而不是protobuf发布版本。v3.0.0支持proto2语法和proto3语法,而v2.6.1仅支持proto2语法。对于所有用户,建议使用v3.0.0-beta-1而不是v2.6.1。

所以看起来要解决你的问题,你应该使用协议3,而不是2.6.1。

并将您的语法=协议2保持在文件的顶部,以准确地说这是您使用的协议2语法。

你能试着告诉我这是否有效吗?这是一个有趣的问题,因为官方文件没有提到它。

 类似资料:
  • 假设我想创建一个字典,例如,一个或多个车型的汽车品牌。 在ES6中,我似乎可以用两种不同的方式做到这一点。 1.创建对象映射: 代码: 2.创建ES6 Map实例: 代码: 以上两种方法的主要区别和优缺点是什么?

  • 问题内容: 我正在使用此功能将URL复制到剪贴板: 在桌面浏览器上一切正常,但在iOS设备上无法正常运行,在iOS设备上我的函数成功返回,但是数据根本没有复制到剪贴板。是什么原因造成的,我该如何解决这个问题? 问题答案: 更新!iOS> = 10 看起来像是在选择范围和一些小技巧的帮助下,可以直接复制到iOS(> = 10)Safari上的剪贴板。我在iPhone 5C iOS 10.3.3和iP

  • 我正在使用这个函数将一个URL复制到剪贴板: 在桌面浏览器上一切正常,但在iOS设备上就不行了,在iOS设备上我的函数成功返回,但数据根本没有复制到剪贴板上。是什么原因造成的?我该如何解决这个问题?

  • 需要使用剪贴板操作将字符串值粘贴到WebElement

  • 我一直在看MDN上的新ES6文档,我找不到地图对象的实际用途,因为普通对象无法工作。有没有人有地图的使用案例,并解释为什么一个对象在这种情况下不能工作?