问题标签 [proto3]
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.
go - How can unknown field functionality be replicated in proto3?
Google has removed unknown fields in proto3. I would love to hear the reasoning behind this choice. Also, if anyone has any way to replicate the proto2 behavior I would love to hear it.
If it matters, we are writing our code in Go.
As proto3 and grpc were developed in parallel, I wanted to reach out to the grpc community as well.
Source: Removal of unknown fields
protocol-buffers - 为什么在 Protocol Buffers 3 中删除了 required 和 optional
我最近在使用gRPC
with proto3
,并且我注意到了这一点,required
并且optional
已在新语法中被删除。
有人能解释一下为什么在 proto3 中删除了必需/可选的吗?这种约束似乎只是使定义稳健所必需的。
语法proto2:
语法proto3:
protocol-buffers - 为什么 proto3 中没有自定义默认值?
Protocol Buffers的proto2版本允许为消息元素指定默认值:
为什么这在proto3中不再可能?我认为这是一个简洁的功能,无需编写任何包装代码即可在线路上节省额外的字节。
go - golang protobuf 从生成的 json 标签中删除 omitempty 标签
我正在使用带有 json 代理的 google grpc。出于某种原因,我需要omitempty
从 *.pb.go 文件中生成的结构中删除标签。
如果我有这样的原始消息
生成的结构看起来像这样
但我需要omitempty
从生成的结构中删除标签。我怎样才能做到这一点?
c# - 在 proto3 中解析 RepeatedFields
一个简单的“Person”对象被解析为
如何解析 RepeatedField<>?
编辑:问题是是否可以通过线路发送 RepeatedFields 或者是否必须将它们捆绑在消息中才能传递?
c++ - Protocol buffer3 and json
Protocol buffer v3 claims, that library is json friendly (https://developers.google.com/protocol-buffers/docs/proto3#json), but I cannot find how to achieve get that mapping. Should I add some plugin, or some option into protoc, or call something special instead SerializeTo/ParseFrom?
Is it someone who use that feature?
c# - C# Google.ProtocolBuffers 反序列化方法(proto3)
我最近升级了我的代码库(Java、C++ 和 C#)以使用 proto3。对于 C#,这涉及对代码的 2000 多次更改。这主要是语义上的,一切都很好,但有一个问题我似乎无法理解;序列化/反序列化。我有以下修改的方法来反序列化我的IMessage
类型(在 proto2 中执行此操作的代码已注释),这是 GitHub 存储库中示例中显示的代码...
但这条线MessageParser parser = new MessageParser();
给了我一个设计/编译时错误
MessageParser 不包含包含 0 个参数的构造函数
这很好奇,因为我知道proto3 文档告诉我相反。
我只想知道,使用 proto3,我如何执行反序列化?
谢谢你的时间。
注意,我的序列化代码是
这可以编译,但是对吗?
java - 在运行时动态解析 .proto 文本文件以生成描述符
我目前正在研究 Google Protocol Buffers,需要生成动态消息。我已经定义了我的 .proto 文件,如下所示。
AFAIK,我可以使用文件描述符集来创建动态消息。但是,这将涉及使用编译器来生成 desc 文件。我想在不编译 .proto 文件的情况下生成描述符。有没有办法使用自定义定义的 .proto 文件而不是使用 protoc 来动态创建消息?
c# - 在解析阶段验证和覆盖默认值
使用 3.0.0-beta3 版本的 C# 本机包,根据官方文档,默认值是在解析阶段分配的,无法区分是否根本没有传递值,就我而言,这是至关重要的一点,因为我想做一些对解码的原型实体进行验证,所以想知道是否有人对数据的自定义验证或以任何方式覆盖/拦截解析阶段有经验?
一些基本的例子:
- 对于 int32 字段,以防它根本没有通过,所以我想处理这种情况并引发自定义异常,而不是默认 0
- 对于 int32 字段,我想强制执行允许的值范围,如 100-1000 否则抛出解析异常
- 对于字符串字段,我想在解析/解码阶段强制执行最小长度
除了在 protobuf 包/API 之上编写自定义验证层之外,您如何建议这样做?我仍然希望有一个可扩展点但尚未找到