问题标签 [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 投票
0 回答
2084 浏览

go - 如何在函数中使用 proto.Message 类型?

我正在使用 golang 和协议缓冲区。我有两个原始消息,其中一个导入另一个。我想使用proto.Messagetype 进行一些处理,但出现错误。

这是foo.proto

这是bar.proto我要导入的地方foo.proto

我正在使用以下函数来处理Book. 我想让它保持通用,因为我的用例也需要转换其他原始消息。

当我在我的 go 文件中使用上述函数时,如下所示

我收到如下语法错误

我究竟做错了什么?

0 投票
0 回答
37 浏览

arrays - 如何从python中的.dat文件将特定列引入缓冲区或字节数组

我有一个包含 4 列(和 4 行)的 .dat 文件。我试图只将名为“叙述”的第三列引入缓冲区。如果这是不可能的,可以将“叙述”列引入字节数组吗?我没有在网上找到任何关于此的内容,也不知道从哪里开始。

到目前为止,我的代码包含所有四列:

0 投票
2 回答
667 浏览

java - 协议缓冲区,序列化数据中有什么?

我是协议缓冲区的新手,真的很想知道更多关于它的信息,很抱歉这个菜鸟问题。

序列化数据中的内容是什么,只有值还是键和值?我认为只有价值观,如果有人想反序列化它,他/她必须有计划。

0 投票
1 回答
334 浏览

java - Protobuf Java - 不区分大小写的映射?

我有一个地图,其中包含用户输入的远程机器名称,以及用户在主机上输入的名称以供在那里运行的程序。不希望出现重复的条目,因为用户输入了一次大写字母,之后又以小写字母输入了相同的名称。

原型:

存储时,理想情况下我可以使用此方法,因为地图标记为区分大小写。虽然不是默认行为,但看不到其他装饰方法。希望我错过了什么。

知道我可以迭代所有地图值,并且只有在我没有找到 equalsCaseInsenstive 匹配时才放。如果必须的话,我最终会这样做,但似乎有点蛮力。

0 投票
2 回答
31 浏览

protocol-buffers - 如何将多个protobufs放在一条线上

我们有一个发送 protobuf 的通信通道。为了能够发送不止一种类型的 protobuf,我们双重序列化:

如果我有一个FriedEggsprotobuf,我将其序列化,将其分配给 Coprolite 的有效负载,将 payload_type 设置为 KBezoarFriedEggs,序列化 Coprolite,然后将其发送。

收到后,我反序列化,检查我有什么,然后反序列化。

这适用于我们所有的平台。但是,我还没有找到其他人这样做的例子(实际上也没有任何其他方式)。所以这表明我应该征求意见。有没有更好的策略或理由让我对此保持警惕?

0 投票
3 回答
231 浏览

java - protoc 自定义插件出错,程序未找到或不可执行

我正在尝试构建一个自定义 protoc 插件来从 .proto 文件生成自定义输出。我从protoc 自定义插件中复制了包含 CodeGenerator 的 java 文件作为起点并将其重命名。我还关注了可执行文件并创建了 .sh 文件。我的shell脚本的内容如下。

例子.sh

我还添加了插件执行的 PATH 变量值和输出。有人可以指出我哪里出了问题吗?shell 脚本运行良好,分别执行 main 方法

在此处输入图像描述

0 投票
1 回答
170 浏览

java - 自定义 protobuf CodeGenerator 的问题

我在编写自定义协议插件时遇到了麻烦。我发布了这个问题,但没有回应。至少请让我知道几个问题的答案。我真的需要这样做。我还没有迈出第一步。

  1. 从这个问题,他们如何将 shell 脚本与插件名称 protoc-gen-code 链接起来。

    java -cp ./codegen.jar CodeGeneratorMain "$@"

  2. 关于问题和谷歌原型缓冲区文档中的上述实现,路径中究竟会有什么......它是Shell脚本的路径吗?shell脚本会被命名为protoc-gen-code吗?

有人可以回答这些问题。

0 投票
0 回答
179 浏览

java - 有没有办法让生成的枚举在 Protobuf v3 中实现自定义接口?

我想让 Proto3 中生成的枚举实现一个自定义的预先存在的接口,如下所示:

(默认情况下,枚举只实现com.google.protobuf.ProtocolMessageEnum)。

对于消息,类似的功能可以通过message_implements:插入点来实现。

enum但是-s没有这样的选择。

在 Protobuf 中是否有传统的方法来实现这一点?或者,可能是一种非常规的方式?

0 投票
0 回答
197 浏览

amazon-web-services - 使用 Make 文件为 Flutter 和 Golang 生成 gRPC 文件

如果我想使用以下配置在 Amazon AWS EC2 上部署我的 Golang 服务器,这是正确的 Make 文件代码吗:

我不允许嵌入图像,所以单击此处查看图像

这是制作文件代码:

运输包装

假设用户在 MacOS 上,如果是其他 OS,请将 PROTO_ROOT_DIR 更改为 protobuf 安装的路径 PROTO_ROOT_DIR = $(shell brew

--prefix)/Cellar/protobuf/3.6.0/include PROJECT_NAME = hello-grpc

Dart 也要求您手动发送所有 google 提供的 proto 文件。

_gendart: @mkdir -p model/gen/ship/dart @protoc -I=model/protodefs --dart_out=grpc:model/gen/ship/dart model/protodefs/ .proto @protoc -I$(PROTO_ROOT_DIR) -- dart_out=model/gen/ship/dart $(PROTO_ROOT_DIR) /google/protobuf/.proto

_gengo: @mkdir -p model/gen @protoc -I=model/protodefs --go_out=plugins=grpc:model/gen model/protodefs/*.proto

创:_gengo _gendart

构建:获取 gen @env CGO_ENABLED=0 GOOS=linux GOARCH=386 构建 -ldflags '-w -extldflags "-static"' -o build/${PROJECT_NAME}_linux_amd64 。@env GOARCH=amd64 go build -ldflags '-w -extldflags "-static"' -o build/${PROJECT_NAME}_macosx_amd64 。

获取:@go get -u github.com/golang/dep/cmd/dep @dep 确保

安装:get gen @cp config_template.json config.json

我的困惑是,我需要使用上述配置为 Amazon AWS EC2 构建文件(假设我的服务器 go 文件名为 main):

GOOS=linux GOARCH=amd64 go build -o main

但是在 Make 文件中,这一行提到了“GOARCH=386”:

构建:获取 gen @env CGO_ENABLED=0 GOOS=linux GOARCH=386 去构建

当我在 Mac OS 上为上述 Amazon AWS EC2 实例构建 Go gRPC 服务器时,正确的文件代码可能是什么

请帮我 :(

0 投票
1 回答
432 浏览

binary-data - 如何将 protobuf 可读请求转换为 proto 消息

我出于教育目的使用 google api 来学习 protobuf 连接。但是400 Bad Request当我发送帖子请求时我得到了。我希望我的 protobuf 消息有问题,并且不明白如何0: 0在 proto 文件中写入消息。我正在使用PHP Protobuf库来序列化数据。

这是可读/解码的 grpc 发布请求数据:

我按照上面的 grpc 请求数据创建了这个原型消息:

我的原始消息是否正确?或者我将如何写它?

还有我在php中的请求模型数据:

是否有(在线/软件/方法)任何工具来解码 grpc/protobuf 请求/响应可读数据,如上面的 json 数据?