问题标签 [protocol-buffers-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 回答
4081 浏览

python - Protobuf3:将 Python 对象序列化为 JSON

根据手册,Protobuf 3.0.0 支持 JSON 序列化:

JSON 中定义明确的编码,作为二进制 proto 编码的替代方案。

我试过什么

  • json.dumps(instance)这提出了TypeError(repr(o) + " is not JSON serializable")
  • 寻找instance.to_json()(或类似的)功能
  • 搜索了 Python 文档

如何将 Python 原型对象序列化为 JSON?

0 投票
2 回答
34724 浏览

protocol-buffers - Protobuf3:如何描述重复字符串的映射?

关于地图类型的官方文档说:

map<key_type, value_type> map_field = N;

...其中 key_type 可以是任何整数或字符串类型(因此,除浮点类型和字节之外的任何标量类型)。value_type 可以是任何类型

我想定义一个map<string, repeated string>字段,但我的 似乎是非法的libprotoc 3.0.0,它抱怨Expected ">"。所以我想知道是否有任何方法可以将重复的字符串放入地图中。

一个可能的解决方法可能是:

ListOfString这里看起来是多余的。

0 投票
2 回答
3298 浏览

c# - 在 c# Visual Studio 中编译协议缓冲区 3 时间戳类型?

消息类型Quake

timestamp.proto包含在同一文件夹中

protoc 3.0.2命令行编译成功

但是 VS 右键单击​​ proto 文件并选择“运行自定义工具”失败,并出现错误“自定义工具 'ProtoBufTool' 失败。”

从 Visual Studio 中生成 C# 类?

0 投票
2 回答
56276 浏览

java - 协议缓冲区中的继承

如何处理 Google Protocol Buffers 3.0 中的继承?

Java等效代码:

Proto 等效代码是什么?

0 投票
1 回答
158 浏览

ruby-on-rails - 如何通过 api 调用发送这种类型的字符串

我正在使用protobuf,需要通过api请求发送转换后的字节,并且需要在服务器上再次解码,字符串将是这样的:

\b\xC0\xB3\xB9\xDD\xFC\x1C\x12XBalance debited with 62.0 Expiry Date is 09-11-2016 09:10:00 Remaining Balance is 1490.0\x1A\x0FDebited Balance\"XBalance debited with 62.0 Expiry Date is 09-11-2016 09:10:00 剩余余额为 1490.0(\x99\x9C\xCE\xBF\x05

如何发送这种类型的请求并在服务器上正确获取?

或者任何人帮助我使用 protobuf 发送信息。

当我在正文中发送字符串时,它会替换表单

当发送标头时,它替换为

谢谢

0 投票
9 回答
155173 浏览

protocol-buffers - 如何在 protobuf 3 中定义可选字段

我需要在 protobuf(proto3 语法)中指定带有可选字段的消息。就 proto 2 语法而言,我想表达的信息是这样的:

据我了解,“可选”概念已从语法 proto 3(以及必需的概念)中删除。虽然尚不清楚替代方案 - 使用默认值来说明尚未从发件人指定字段,但如果默认值属于有效值域(例如考虑布尔类型),则会留下歧义。

那么,我应该如何对上面的消息进行编码?谢谢你。

0 投票
1 回答
780 浏览

c# - 从 proto 文件构造 cs 文件?

这可能看起来很基本,但我对 C# 真的很陌生,所以谷歌参考文档对我来说不是那么清楚。

他们指示:

他们的例子是

所以我的基本问题清单是:

  • 对于 proto_path,这是从程序文件夹的顶层开始吗

  • 什么是'bar'选项,它总是'src'吗?

  • 什么是“src”选项,它总是“build/gen”吗?

  • 这个可以复制吗?'--csharp_opt=file_extension=.g.cs,base_namespace=MyProgram src/MyProtoFile.proto'

0 投票
2 回答
8937 浏览

java - How to Mask certain fields in Protobuf

I couldnt find a way to mask certain fields in protobuf structure. I did read about the FieldMaskUtil and tried few examples but it seems to do the reverse i.e copy fields which are mentioned in FieldMask which is different from what i wanted. Here's the sample structure and corresponding Test code.

Proto:

Here's sample test code

}

Here's the output:

What i would have expected is to print everything other than name

Is there a way to do what i want

0 投票
1 回答
342 浏览

json - 为什么在对protobuf3知名类型进行JSON反序列化时会抛出异常?

使用 Google.Protobuf Nuget 包版本 3.4.1

在最简单的形式中,我定义了一个 Google 协议缓冲区消息,如下所示:

我使用来自 Google.Protobuf.Tools 版本 3.4.0 的 Google protoc 工具将其编译为 C# 代码。

当我实例化 Foo 的实例并使用 Google.Protobuf.JsonFormatter 将其序列化为字符串时,我得到了一个合理的结果,即“{“NullableInt”:5 }”。当我使用 Google.Protobuf.JsonParser 将其反序列化回 Foo 实例时,解析器会抛出 System.InvalidCastException,说明“无法将 'System.Int32' 类型的对象转换为 'Google.Protobuf.WellKnownTypes.Int32Value'。 "

为什么会抛出这个异常?我在做傻事吗?

这是我正在运行的代码:

0 投票
1 回答
395 浏览

protocol-buffers - Protobuf 消息 - 解析二进制文件和文本文件之间的差异

在我对协议缓冲区应用程序的实现过程中,我尝试使用文本 pbtxt 文件来简化我的编程。这个想法是在我对 API 有了更清晰的了解之后切换到 pb 二进制格式。(我在 C++ 中工作)

我通过使用TextFormat::Parse. (文件内容来自TextFormat::Print)。然后我生成了相应的二进制文件,我尝试用它导入myMessageVariable.ParsefromCodedStream(文件未压缩)。但我注意到只有一小部分消息被导入。返回 true,因此我猜该myMessageVariable.IsInitialized库“认为”它已完全导入文件。

所以我的问题是:文件的导入方式有什么不同可能使导入“半失败”吗?(除了一个是二进制而另一个是文本的明显原因之外?)我们能做些什么来对抗它?