问题标签 [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.
java - 如何使用描述符(protobuf,java)将字节数组解析为 GeneratedMessage?
给定一个FieldDescriptor和 a byte[]
,我如何将后者解析为我的GeneratedMessage实现?我看不到对相应 java 类(包含 generated parseFrom(byte[] data)
)的任何引用,也看不到任何返回类似Parser<? extends GeneratedMessage>
.
换句话说,我无法弄清楚如何对字段(而不是整个消息)执行相同的操作( Java 中 PB 的通用解析)。
protocol-buffers - 在 Protobuf 消息中引用任意字段的方法
我正在寻找协议缓冲区消息中任意字段的字符串表示形式。有没有实现这个的库?我已经研究过使用字段掩码,但是它们对重复字段没有强有力的支持。
protocol-buffers - 从 C++ 服务器反序列化 protobuf 数据时,Java 客户端出现 InvalidProtocolBufferException
我有这样的 protobuf 消息:
在服务器端(C++),我们将这个字段设置如下(LLDP 是外部类,Interfaces 在里面):
在客户端(Java)上,我们像这样提取这个字段:
这会引发 InvalidProtocolBufferException 异常。当我在我的 Java 客户端中转储“更新”时,我看到:
type_url 对我来说似乎是正确的。我在这里做错了什么?
谢谢你的时间。
编辑#1:
我查看了异常字符串。它是“Any 消息的类型与给定的类不匹配”。
C++ 和 Java 使用相同的 proto 文件,但我在 C++ 中看到“openconfig_lldp.Lldp.Interfaces”,而在 Java 中它是“OpenconfigLldp.Lldp.Interfaces”。需要找出原因。。
编辑#2:
使用相同的 .proto 文件。在这种情况下,它是:
对于 Java,我在名为 openconfig_lldp 的包中看到父类为 OpenconfigLldp。
在 C++ 中,我没有看到任何名为“OpenconfigLldp”的类生成。相反,它只是“Lldp”
所以,Any.protobuf 中的 type_url 是不匹配的。C ++方面将其作为
在 Java 端,我使用:
任何人都想过为什么在 Java 协议输出中有一个包装类?
编辑#3
显然看起来是因为“outer_class_name”。在 Java 代码中,我有一个外部类“OpenconfigLldp”。
type_url 格式为:
因此,C++ 代码将其设置为 openconfig_lldp.Lldp.Interfaces。但是,这映射到 Java 中的 OpenconfigLldp.Lldp.Interfaces。
我该如何解决这个问题?
最后的编辑和最后的问题
经过一番挖掘,这就是我发现的。默认情况下,type_url 是:
在 Java 方面,我查看了 Any 实现。它试图将其与以下内容进行比较:
我通过打印发现了这一点:
所以,我破解了 C++ 端发送:
所以,我想我知道这里发生了什么!
感谢您阅读所有编辑。
mongodb - 在 Mongodb 中存储 protobuf java 对象的简单方法?
当需要存储以 Java 实例形式(来自生成的 java 类)的 protobuf3 消息时,最好的选择是存储对象本身,然后再从数据库中读取它。
我的用例是将此类消息存储在 Mongodb 中。在调查这个的时候,我找不到办法,所以决定在这里问。
java - Protoc Java 插件的依赖项?
我正在尝试在How to write a custom Protobuf CodeGenerator in Java中制作工作示例。当我尝试用
我收到编译错误,因为 CodeGenerator 是未知的。我的 pom.xml Maven 文件中有以下“依赖项”标签 -
我还需要向依赖项添加什么才能使我的插件正常工作?我计划使用来自https://developers.google.com/protocol-buffers/docs/reference/java/的 Java API 。
java - 如何从 java maven 项目生成 python protobuf
我有 maven 项目,其中我定义了各种.proto
文件,其相应的 java 文件是通过 maven 插件生成的。这个生成的文件将用于实现 [rpc - 服务器实现],但我希望它被 python 客户端使用。
因此需要 python 等价于这些 proto 文件。一种方法是手动python protobuf
对这些文件运行命令.proto
并生成代码,但这太手动了。我正在寻找其他选择。
任何帮助,将不胜感激。
apache-spark - 当 Kryo 序列化与 Spark 一起使用时 ProtoBuf 中的 NullPointerException
当我的 Spark 应用程序尝试序列化作为键字符串和值浮点数的映射的 protobuf 字段时,我在我的 Spark 应用程序中收到以下错误。在 spark 应用程序中使用了 Kryo 序列化。
有没有人遇到过这个问题?有没有办法解决它?
java - Protobuf 映射类型 JSON 格式使用字符串文字“键”和“值”而不是实际值
我正在尝试将 protobuf 对象转换为 JSON 格式,com.googlecode.protobuf.format.JsonFormat
但该map
类型出乎意料。
我的消息是这样的
Response
问题是我创建的对象的 JSON 格式
我希望将错误格式化为由字符串值(映射键的)键控的映射
但是实际输出是(我只评估了new JsonFormat().printToString(response)
intellij 中的部分)
我希望这是我错过的一些小配置,以使 protobuf(或杰克逊?)了解实际的键值?不使用“键”和“值”。
顺便说一句,在类型中具有文字“键”和“值”字段有什么意义map
?您不能使用它进行成分查找,您可能只使用自定义类型/对象。
protocol-buffers - protobuf 插件,用于增强生成的 java 类
我正在寻找在实践中使用 protobuf 插件架构的任何示例。
最终,我想为生成的 java 类添加自定义注释。但还没有走远。我不太明白插入点https://developers.google.com/protocol-buffers/docs/reference/java-generated#plugins是如何工作的,以及如何利用生成的文件结构。
我正在寻找任何可以告诉我如何做这样的事情的建议或示例
java - 将 protobuf-lite 消息转换为 JSON 并返回
使用常规 Java Protobuf 时,您可以使用JsonFormat
fromcom.google.protobuf:protobuf-java-util
将 Protobuf 消息转换为 JSON 字符串,然后再转换回来。
但是是否存在适用于 Java Protobuf Lite的转换器?JsonFormat
不幸的是,只支持常规的 Java Protobuf 消息。