问题标签 [protobuf-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11379 浏览

regex - Protobuf3:使用正则表达式进行字符串验证

我一直在使用Protobuf3来定义一个 PB 消息:

在我的系统中,传感器具有独特的 id 格式 (a-la SENSOR-1342r43),可以使用正则表达式轻松验证。

有没有办法将正则表达式验证器添加到 protobuf 字段,以便只有符合正则表达式的字符串才会被接受到该字段中?

0 投票
1 回答
8106 浏览

polymorphism - 协议缓冲区中的多态性 3

目前的设计

我正在重构一些为用户返回事件源的现有 API 代码。API 是一个普通的 RESTful API,当前的实现只是简单地查询一个 DB 并返回一个提要。

代码又长又麻烦,所以我决定将提要生成转移到将从 API 服务器调用的微服务中。

新设计

为了解耦,我认为数据可能会作为 Protobuf 对象从 API 服务器到微服务来回移动。这样,我可以在任一端更改编程语言,并且仍然享受 protobuf 的类型安全和纤薄的尺寸。

在此处输入图像描述

问题

提要包含多种类型(例如喜欢、图像和语音消息)。将来,可以添加新类型。例如,它们都共享一些属性时间戳和标题 - 但除此之外,它们可能完全不同。

在经典的 OOP 中,解决方案很简单 -FeedItem所有提要项都继承自一个基类,以及一个Feed包含一系列类的FeedItem类。

如何在 Protocol Buffers 3 中表达多态性的概念,或者至少在列表中启用不同类型的消息?

我检查了什么

  • Oneof:“一个不可重复”。
  • Any: 太宽泛了(像 Java 的List<Object>.
0 投票
1 回答
2390 浏览

protobuf-3 - 如何在protobuf 3中存储时间

我在golang中有这个结构

我如何在 protobuf3 中编写它?

0 投票
1 回答
5094 浏览

python-3.x - 在python中反序列化Protobuf 3字节数组

如何通过 bytearray 响应作为字符串读取 Protobuf 消息?

我尝试查找 Protobuf 库。 https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc#Message.MergeFrom

当我尝试 mergeFrom 时, mergeFromString 来取回响应。我得到以下错误。

TypeError:MergeFrom() 的参数必须是同一类的实例:预期的 GetUpdateResponseMsg 得到了字节。

我尝试了 ParseFromString api 并得到了 None 响应。

我正在尝试将 Protobuf 反序列化回人类可读的格式。

还有什么我可以尝试的吗?

0 投票
0 回答
1075 浏览

protocol-buffers - GRPC 嵌套数组 (protobuf3)

我将 GRPC 与 proto3 一起使用,并尝试在消息中表示以下 JSON:

如您所见,有 3 级数组。我在 protobuf 中表示这一点的尝试是:

当我尝试运行返回此消息类型的调用时,我收到以下错误:

我相信这与嵌套数组有关,但我可能没有注意到。

关于为什么这不起作用的任何想法?

0 投票
1 回答
988 浏览

haskell - 使用 protbuf3,我如何表达类型“映射字符串(可能是 CustomType)”?

我正在尝试在客户端和服务之间共享一个大型字典/地图。我需要能够双向设置值,并从字典/地图中删除值,而无需每次都来回传递整个地图。

我知道我可以使用以下方法创建地图:

protobuf3 地图的文档

我在这里看到使用oneof的建议: https ://github.com/google/protobuf/issues/1606

但是,该错误报告中建议的语法对我来说没有意义:

我将如何测试?我将如何存储无?

我会尝试创建类似的东西:

但我根本不相信这是优雅而正确的解决方案。

我也考虑过完全改变我的模式并做。

但是我不喜欢那个解决方案,因为它会创建一个未定义的案例。如果一个名为“foo”的单元格同时出现在“cells”映射和“deleted_cells”映射中,会发生什么?此外,它将数据从计算中抽象出来。我希望能够将一个单元格传递给一个修改并可能决定删除单元格的函数,因此对我来说,关于单元格删除的信息存储在单元格本身附近似乎很自然。

0 投票
1 回答
3832 浏览

python - Python Protobuf 中的高效消息字段设置

我在我正在处理的 Python 项目中使用 Protobuf (v3.5.1)。我的情况可以简化为:

我担心.CopyFrom()(如果我是正确的,它是复制内容,而不是引用)的内存性能。现在,在 C++ 中,我可以使用类似的东西:

从生成的源来看,它看起来不需要复制任何内容:

Python中有类似的东西吗?我查看了 Python 生成的源代码,但没有发现任何适用的。

0 投票
1 回答
1560 浏览

c# - protobuf3 中的重复 Int32Value(可为空的 int 数组)

我有以下 protobuf 消息协议:

protoc 可以很好地编译它,并且在 C# 中所有 Int32Values 都是 int?。但它在运行时失败,带有一个不允许的空参数异常。我可以理解repeated不允许空消息。但是Int32Value是 WellKnownType,因此编译器可以在需要时生成特殊的 NullValue 类型。

这是 protobuf 中的限制(不允许Int32Valuein repeated)还是 C# 代码生成和支持库中的限制/错误?

除了创建自己的消息和 codegen 之外,在 protobuf 协议中执行可为空的 int 数组的选项有哪些?

0 投票
0 回答
904 浏览

tensorflow - 如何在 Jetson TX1 上更新 Protocol Buffer 运行时库?

我正在尝试使用 TensorFlow对象检测 API 来训练 Mask RCNN 模型。由于我使用的是Nvidia Jetson TX1,因此我使用此github repo中的预构建轮子安装了 TensorFlow 1.4 。

在尝试运行时

我遇到了以下错误:

它告诉我更新protobuf库,但我不知道该怎么做,因为我已经尝试安装最新版本(见下文)。其实我什至不知道到底是谁在抛出这个错误。希望有人可以帮助我。提前致谢!

我按照官方教程安装了对象检测 API ,特别是我安装了较新版本的protobufvia

我认为此安装有效,因为我得到了所需的输出:

但如果我输入

安装了一些东西apt。不确定这是否与错误有关。

运行:

  • Ubuntu 16.04
  • 蟒蛇 3.5
  • TensorFlow 1.4
0 投票
2 回答
394 浏览

protocol-buffers - 如何停止使用 protobuf3 打印错误消息“无法解析类型的消息,因为它缺少必填字段”

我只想在记录某些内容时从字符串中解析一个实例,而不关心结果。

但是当我将 protobuf 更新到 3.5.0 时,烦人的消息总是打印到终端(stderr):

“无法解析类型的消息,因为它缺少必填字段”</p>

它的字段必须是必需的。

如何停止打印错误消息?