Protobuf:将原始二进制数据转换为json

时间:2018-12-11 09:15:08

标签: java protocol-buffers protobuf-java

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

2 个答案:

答案 0 :(得分:1)

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

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

因此:没有模式,就没有一种可靠且可靠的方式来理解数据,更不用说选择如何将其显示为JSON了。

答案 1 :(得分:0)

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

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

是的,他们提供了一些将protobuffer转换为JSON的方法,就像我在c ++中使用protobuffer一样,它提供了一些将其转换为JSON的方法。

相同的Java也将可用。因此,请勿将protoc工具概念与此“数据格式转换”混合使用

尝试使用Protobuffer官方提供的api

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

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

希望这会有所帮助