1

我所拥有的只是原始 protobuf 二进制数据,我无权访问 .proto 文件,我需要将其转换为 Java 中的 json 字符串。那么有没有办法在java中做到这一点?即类似于 protoc 工具的东西

4

2 回答 2

3

如果没有 .proto 模式,这将是不可能的。出于多种原因:

  • 原始二进制文件不包含字段名称,仅包含数字;您当然可以创建具有整数外观属性的 JSON,但是:
  • 没有模式的数据格式不明确:
    • “varint”(简单整数)在不同的上下文中可以表示多个不同的事物,包括有符号、无符号、之字形有符号或布尔值
    • 固定长度同上,可以是整数(有符号或无符号)或浮点数
    • “长度前缀”可以是 utf-8 字符串、打包数组或子消息

所以:没有架构就没有好的和可靠的方式来理解数据,更不用说选择如何将其显示为 JSON。

于 2018-12-11T14:53:05.417 回答
0

.proto文件基本上是您的原型缓冲区的架构。

protoc.exe工具用于生成文件(即用于通过提供 setter 和 getter 方法来创建 proto 缓冲区。)

是的,它们有一些方法可以将其转换protobufferJSONprotobuffer在 c++ 中使用的方法,并且它提供了一些将其转换为 JSON 的方法。

同样也将在 Java 中可用。所以不要将protoc工具概念与这种“数据格式转换”混为一谈

尝试使用 Protobuffer 官方提供的这个 api

https://developers.google.com/protocol-buffers/docs/reference/java/

https://developers.google.com/protocol-buffers/docs/reference/java/

希望它会有所帮助

于 2018-12-11T11:21:26.080 回答