问题标签 [protobuf-java]

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 回答
880 浏览

java - 如何修复重复的协议缓冲区字段中的重复元素?

我想使用 protocoll-buffers 加载一些数据(JSON 在 Android 上太慢了),但不知何故,我的repeated字段company包含每个元素的 6 个副本 - 尽管我没有存储任何重复项。

我怎么知道它不应该包含重复项?
我确实为我保存的每个对象设置了一个计数器 - 这是预期的长度。

这是我的架构:

我如何存储我的数据:

这就是我加载数据的方式:

当然,我希望每家公司只有 1 次,因为我确认每家公司只存储一次CompanyProtoRepository而不是 6 次。

0 投票
1 回答
5202 浏览

java - 如何修复“解析协议消息时,输入意外在字段中间结束”错误

获取 InvalidProtocolBufferException:解析协议消息时,输入在字段中间意外结束。解析 Protobuf 时出错

如果我在响应对象上调用 response.getContentAsString() 方法,虽然我可以看到输出,但不确定为什么解析失败。

我的原型文件:

我编写了 API 来返回 Proto 响应,如下所示

我的 API 将返回以下输出

我正在尝试调用 API 并将其解析回 Test2,如下所示

在上述步骤中出现错误如果我调试并尝试打印 response.getContentAsString(),我会得到正确的输出,如下所示,但解析失败。

0 投票
2 回答
571 浏览

java - 如何使用 protobuf 序列化 java.util.regex.Pattern?

我有一个对象,我想使用协议缓冲区序列化并存储在 redis 中。对象包含在java.util.regex.Pattern实例化对象时遵守的 。

此模式用于验证对某个 api 的输入。由于每次编译模式都很昂贵,所以我在实例化期间编译一次模式,然后在每次调用 api 时重用相同的模式实例。如何Pattern在以下模式中序列化此编译字段,以便在反序列化对象时无需再次编译模式即可使用它?

谢谢。

0 投票
1 回答
775 浏览

android - Android Gradle Protobufs:如何编译完整的 protobuf 而不是“lite”版本?

我能找到的配置build.gradle以编译 protobufs 的每个示例都使用“lite”版本,看起来像这样:

注意“ javalite ”。这会生成使用MessageLite的 java 文件,但我需要完整的Message类。

如何更改它以使其不生成“精简版”版本?

0 投票
1 回答
533 浏览

protobuf-java - 将 protobuf 转换为其他 protobuf

我从 Kaka 阅读了 Protobuf,所以最后我得到了一个生成的 Java 对象。我想根据我得到的原始文件重命名/创建其他 Protobuf。

假设我有 2 个类 A 和 B。我的代码听 Kafka 主题并获得 A。我想将 A“转换”为 B,这几乎是相同的对象(变量名称更改很少)。有没有办法覆盖 Protobuf Parser?为了生成 B 而不是 A?

例如:

我的听众得到 A 而我想得到 B (bb=aa, bb=aaaa

0 投票
1 回答
6828 浏览

protocol-buffers - --grpc_out:protoc-gen-grpc:插件在 osx 上失败,状态码为 1。(爪哇)

我正在关注有关使用 grpc 的教程,我应该使用插件来生成源代码,但我被困在如何使用 --grpc_out 和 --plugin 标志上。

以下是当前的挑战。

  1. 教程中从https://search.maven.org/下载的协议生成器是 osx 操作系统的可执行文件https://search.maven.org/search?q=a:protoc-gen-grpc-java . 这是第一个困惑。 在此处输入图像描述
  2. 如果我不使用这些插件标志(--plugin,--grpc_out),我的代码可以使用此命令生成

    protoc -I /proto --java_out /hello/grpc/grpc/revamp/services /proto/messages.proto

    以上工作正常

  3. 使用从混淆 1 下载的插件添加标志会使用此命令引发此错误;

    protoc -I /proto --java_out /hello/grpc/grpc/revamp/services /proto/messages.proto --grpc_out /hello/grpc/grpc/revamp/services --plugin=protoc-gen-grpc=/proto/ lib/protoc-gen-grpc-java-1.19.0-osx-x86_64.exe

    --grpc_out:protoc-gen-grpc:插件失败,状态码为 1。

有没有人在 osx 上使用过这个插件?,谁能帮忙看看我做错了什么。

提前致谢

0 投票
1 回答
1203 浏览

java - 如何在 protobuf 文件中描述 Java 嵌套列表?

我有一个 Java 类,包括一个嵌套列表字段,如:

但是如何在 protobuf 文件中描述它呢?我尝试这样,但它不能工作

==============更新======================

我尝试了 İlker Korkut 的回答,但是当我想将 json 转换为 protobuf 时,它失败了。我的json如下:

和我的protobuf文件如下:

使用 java 代码将 json 转换为 protobuf :

它抛出异常“期望消息对象但得到:[[139,35],[138,34]]”

maven文件如下:

请帮我 !

0 投票
1 回答
799 浏览

protobuf-java - 方法 emptyIntList() 未定义

我是Google Protobuf的新手。尝试使用下面的student.proto文件来玩它。

然后我尝试使用下面的 Protobuf 编译器命令对其进行编译。从这里,我下载了编译器。

它成功编译并生成StudentDTO.java,但有错误。类内部使用了两种方法' emptyIntList() '和' newIntList() ',但它们没有被定义。

现在我的问题是如何解决这些错误或者我错过了什么?

0 投票
1 回答
212 浏览

protocol-buffers - 映射是否向后兼容重复的键值对?

我能用吗

代替

?

第一个来源在 proto3 中,第二个来源在 proto2 中。

0 投票
1 回答
430 浏览

java - 如何用 protobuf 表示未命名的对象列表?

我正在尝试使用 Spring RestTemplate 使用 REST api,这几乎是我想要做的:

以下是源 json 的样子,我如何在 protobuf 中表示一个未命名的列表?

这就是我的.proto文件的样子

我收到以下错误: