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

c# - 在单个表达式中初始化协议缓冲区

我在 .net 中使用协议缓冲区,并使用 protoc 生成 C# 类。例如,让我们从https://developers.google.com/protocol-buffers/docs/proto3获取这个 proto3 文件:

让我们尝试初始化生成的 C# 类。

它们看起来像这样

现在让我们尝试初始化它。理想情况下,我希望能够做这样的事情:

但是,由于集合没有设置器,因此我必须跨多个表达式对其进行初始化:

理想情况下,一个表达式会分布在 5 个表达式和语句的混合体中。

有没有更简洁的方法来初始化我缺少的这些结构?

0 投票
0 回答
820 浏览

php - 如何使用 proto3 语法在 protobuf-php 中分配重复的消息?

.proto 文件定义:

我的PHP代码:

实际: $result 没有数据,那么如何分配重复字段?

我尝试像这样使用 RepeatedField 类:

但我不知道如何使用它,所以我使用数组来分配但没有成功

0 投票
1 回答
2288 浏览

c# - AutoMapper 与 Google Protocol Buffers 3 的务实使用

我想将 AutoMapper 与 proto3 一起使用,但我遇到的最大问题是从可能允许的源属性映射null到永远不会这样做的原型。手动进行此类填充时,必须执行以下操作:

我仍然觉得这很荒谬,但显然 proto3 就是这样。

无论如何,这意味着映射必须具有条件以确保null值不会传播到原型:

我能感觉到这很快就变老,因为我的原型中有很多属性。

我想知道是否有办法让我在更高的抽象层次上处理这个问题?

0 投票
1 回答
1297 浏览

protocol-buffers - 带有 oneof 或聚合的常见 proto3 字段

我必须为一个大约有 12 种变体的对象生成一个原型类。所有 12 个变体共享四个相同的字段,然后具有特定的字段。在大多数情况下,非特定字段的数量将比公共字段多得多

我想知道实现这一目标的最有效方法是什么。

第一种选择:在通用原型类中定义通用字段,然后在所有特定类型中声明此类型的字段:

或者最好定义一个包含字段的顶级原型,然后有一个 oneof 字段,它可以引用包含特定字段的另一种类型:

我对表演和惯例特别感兴趣。或者,如果有任何更典型的方式,例如只是重复公共字段。请记住,尽管我的原型只有 4 个公共字段,通常有 3-8 个特定字段。

0 投票
1 回答
645 浏览

vector - 是否可以在 protobuf 消息中包含向量字段以生成 Rust 结构?

我有一个用于在项目中生成类型的 protobuf 文件。其中一种类型如下所示:

然后我可以启动一个生成一些 Go 代码的小脚本,protoc-gen-go稍后通过另一个脚本使用protoc-gen-rust.

结果是一个 Rust 文件,如下所示:

我不想要一个更好的方法来完全生成 Rust 类型,这个项目很大而且在生产中,我的工作不是重写/重组它,而只是添加一些功能,为此我需要一些漂亮的小标志向量要添加到几个结构中。

我想Vec在结构中添加一些字段myStruct,例如:

是否可以使用 proto-buf 来做到这一点?如果是,我该怎么做?

0 投票
1 回答
872 浏览

protocol-buffers - 将消息类型更改为类似类型会破坏向后兼容性吗?

我想通过向后兼容性保护我的应用程序免受未来问题的影响。现在我有这个版本test.proto

我对将结果消息更改DeleteBar()为“DeleteBarOut”之类的消息的情况感兴趣:

问题是关于与旧.proto. 我可以将结果消息的名称从“BoolResult”更改为“DeleteBarOut”吗?

或者我应该保存消息的旧名称并编辑“BoolResult”的字段列表?但是,我怎样才能DeleteFoo()从这个解决方案中的任何更改中保存?

0 投票
1 回答
4742 浏览

java - 是否可以检查 proto 文件中的枚举值?

我想验证生成的 Java 代码中的枚举值。我有以下原型文件:

我想在代码中对 Currency 枚举进行一些验证,该代码由生成protobuf并丢弃错误消息,以防值不适用于提供的枚举(例如:)invalid currency。可能吗?

0 投票
1 回答
259 浏览

protocol-buffers - 在 Proto3 中支持多种模式

我正在创建一个允许传入 jsonObject 中的多个/任意数据的 proto3 模式。我想一次性转换传入的 json 对象。

例如

我还想在不同的请求中支持 key2 的模式 B。

我尝试了几种不同的方法,oneof但是因为oneof它需要不同的键名,因为我使用的是相同的key2,在这种情况下它对我不起作用。

这是架构。

任何人都知道如何实现这一目标?

0 投票
3 回答
5865 浏览

protocol-buffers - 如何在 ProtoBuf (gRPC) - Proto3 语法中添加消息类型作为对象?

如何在 ProtoBuf - Proto3 语法中将消息类型作为对象发送?

我想传输对象而不是字符串或数字。

例子

在这里,我收到错误

--

解决方法

我可以在服务器端将它转换为字符串,然后我可以在客户端 JSON.parse()。

但我想知道,是否有更好的方法来做到这一点。

0 投票
1 回答
1516 浏览

c# - 如何在 proto 文件中添加两个具有相同名称的方法

我的原型中有多个具有相同名称和不同参数的方法,当我尝试生成 grpc 时出现错误:

'方法已经定义'