问题标签 [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.

0 投票
1 回答
1409 浏览

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

0 投票
3 回答
130286 浏览

protocol-buffers - 为什么在 Protocol Buffers 3 中删除了 required 和 optional

我最近在使用gRPCwith proto3,并且我注意到了这一点,required并且optional已在新语法中被删除。

有人能解释一下为什么在 proto3 中删除了必需/可选的吗?这种约束似乎只是使定义稳健所必需的。

语法proto2:

语法proto3:

0 投票
1 回答
4448 浏览

c++ - 使用 Protocol Buffers 描述符对象从 .proto 文件中读取注释

0 投票
3 回答
36605 浏览

protocol-buffers - 为什么 proto3 中没有自定义默认值?

Protocol Buffers的proto2版本允许为消息元素指定默认值:

为什么这在proto3中不再可能?我认为这是一个简洁的功能,无需编写任何包装代码即可在线路上节省额外的字节。

0 投票
8 回答
21042 浏览

go - golang protobuf 从生成的 json 标签中删除 omitempty 标签

我正在使用带有 json 代理的 google grpc。出于某种原因,我需要omitempty从 *.pb.go 文件中生成的结构中删除标签。

如果我有这样的原始消息

生成的结构看起来像这样

但我需要omitempty从生成的结构中删除标签。我怎样才能做到这一点?

0 投票
1 回答
697 浏览

c# - 在 proto3 中解析 RepeatedFields

一个简单的“Person”对象被解析为

如何解析 RepeatedField<>?

编辑:问题是是否可以通过线路发送 RepeatedFields 或者是否必须将它们捆绑在消息中才能传递?

0 投票
2 回答
14187 浏览

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?

0 投票
1 回答
4592 浏览

c# - C# Google.ProtocolBuffers 反序列化方法(proto3)

我最近升级了我的代码库(Java、C++ 和 C#)以使用 proto3。对于 C#,这涉及对代码的 2000 多次更改。这主要是语义上的,一切都很好,但有一个问题我似乎无法理解;序列化/反序列化。我有以下修改的方法来反序列化我的IMessage类型(在 proto2 中执行此操作的代码已注释),这是 GitHub 存储库中示例中显示的代码...

但这条线MessageParser parser = new MessageParser();给了我一个设计/编译时错误

MessageParser 不包含包含 0 个参数的构造函数

这很好奇,因为我知道proto3 文档告诉我相反。

我只想知道,使用 proto3,我如何执行反序列化?

谢谢你的时间。


注意,我的序列化代码是

这可以编译,但是对吗?

0 投票
1 回答
1507 浏览

java - 在运行时动态解析 .proto 文本文件以生成描述符

我目前正在研究 Google Protocol Buffers,需要生成动态消息。我已经定义了我的 .proto 文件,如下所示。

AFAIK,我可以使用文件描述符集来创建动态消息。但是,这将涉及使用编译器来生成 desc 文件。我想在不编译 .proto 文件的情况下生成描述符。有没有办法使用自定义定义的 .proto 文件而不是使用 protoc 来动态创建消息?

0 投票
1 回答
284 浏览

c# - 在解析阶段验证和覆盖默认值

使用 3.0.0-beta3 版本的 C# 本机包,根据官方文档,默认值是在解析阶段分配的,无法区分是否根本没有传递值,就我而言,这是至关重要的一点,因为我想做一些对解码的原型实体进行验证,所以想知道是否有人对数据的自定义验证或以任何方式覆盖/拦截解析阶段有经验?

一些基本的例子:

  1. 对于 int32 字段,以防它根本没有通过,所以我想处理这种情况并引发自定义异常,而不是默认 0
  2. 对于 int32 字段,我想强制执行允许的值范围,如 100-1000 否则抛出解析异常
  3. 对于字符串字段,我想在解析/解码阶段强制执行最小长度

除了在 protobuf 包/API 之上编写自定义验证层之外,您如何建议这样做?我仍然希望有一个可扩展点但尚未找到