问题标签 [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.
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?
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
这里看起来是多余的。
c# - 在 c# Visual Studio 中编译协议缓冲区 3 时间戳类型?
消息类型Quake
timestamp.proto
包含在同一文件夹中
protoc 3.0.2
命令行编译成功
但是 VS 右键单击 proto 文件并选择“运行自定义工具”失败,并出现错误“自定义工具 'ProtoBufTool' 失败。”
从 Visual Studio 中生成 C# 类?
java - 协议缓冲区中的继承
如何处理 Google Protocol Buffers 3.0 中的继承?
Java等效代码:
Proto 等效代码是什么?
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 发送信息。
当我在正文中发送字符串时,它会替换表单
至
当发送标头时,它替换为
谢谢
protocol-buffers - 如何在 protobuf 3 中定义可选字段
我需要在 protobuf(proto3 语法)中指定带有可选字段的消息。就 proto 2 语法而言,我想表达的信息是这样的:
据我了解,“可选”概念已从语法 proto 3(以及必需的概念)中删除。虽然尚不清楚替代方案 - 使用默认值来说明尚未从发件人指定字段,但如果默认值属于有效值域(例如考虑布尔类型),则会留下歧义。
那么,我应该如何对上面的消息进行编码?谢谢你。
c# - 从 proto 文件构造 cs 文件?
这可能看起来很基本,但我对 C# 真的很陌生,所以谷歌参考文档对我来说不是那么清楚。
他们指示:
他们的例子是
所以我的基本问题清单是:
对于 proto_path,这是从程序文件夹的顶层开始吗
什么是'bar'选项,它总是'src'吗?
什么是“src”选项,它总是“build/gen”吗?
这个可以复制吗?'--csharp_opt=file_extension=.g.cs,base_namespace=MyProgram src/MyProtoFile.proto'
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
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'。 "
为什么会抛出这个异常?我在做傻事吗?
这是我正在运行的代码:
protocol-buffers - Protobuf 消息 - 解析二进制文件和文本文件之间的差异
在我对协议缓冲区应用程序的实现过程中,我尝试使用文本 pbtxt 文件来简化我的编程。这个想法是在我对 API 有了更清晰的了解之后切换到 pb 二进制格式。(我在 C++ 中工作)
我通过使用TextFormat::Parse
. (文件内容来自TextFormat::Print
)。然后我生成了相应的二进制文件,我尝试用它导入myMessageVariable.ParsefromCodedStream
(文件未压缩)。但我注意到只有一小部分消息被导入。返回 true,因此我猜该myMessageVariable.IsInitialized
库“认为”它已完全导入文件。
所以我的问题是:文件的导入方式有什么不同可能使导入“半失败”吗?(除了一个是二进制而另一个是文本的明显原因之外?)我们能做些什么来对抗它?