我所拥有的只是原始 protobuf 二进制数据,我无权访问 .proto 文件,我需要将其转换为 Java 中的 json 字符串。那么有没有办法在java中做到这一点?即类似于 protoc 工具的东西
问问题
4837 次
2 回答
3
如果没有 .proto 模式,这将是不可能的。出于多种原因:
- 原始二进制文件不包含字段名称,仅包含数字;您当然可以创建具有整数外观属性的 JSON,但是:
- 没有模式的数据格式不明确:
- “varint”(简单整数)在不同的上下文中可以表示多个不同的事物,包括有符号、无符号、之字形有符号或布尔值
- 固定长度同上,可以是整数(有符号或无符号)或浮点数
- “长度前缀”可以是 utf-8 字符串、打包数组或子消息
所以:没有架构就没有好的和可靠的方式来理解数据,更不用说选择如何将其显示为 JSON。
于 2018-12-11T14:53:05.417 回答
0
.proto
文件基本上是您的原型缓冲区的架构。
protoc.exe
工具用于生成文件(即用于通过提供 setter 和 getter 方法来创建 proto 缓冲区。)
是的,它们有一些方法可以将其转换protobuffer
为JSON
我protobuffer
在 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 回答