我需要帮助将 .textpb 转换为带有嵌套输入的 json

问题描述 投票:0回答:1

我需要帮助将 .textpb 转换为带有嵌套输入的 json。

我用 python 尝试了各种工具,但不起作用,因为 .textpb 或 .pb 是嵌套的,因此 json 中的输出数据不正确

请找到下面的文件位置,任何人都可以帮忙

https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/refs/heads/main/assets/latest_carrier_id

json protocol-buffers
1个回答
0
投票

“pb”和“textpb”指的是协议缓冲区

注意“textpb”可能指的是协议缓冲区文本格式,这是......不太有用。

“pb”文件是对应于编码 Protocol Buffer“消息”的二进制文件,您将需要 Protocol Buffer(又名“protobuf”)工具来完全解码该文件。

我无法通过简单浏览您喜欢的网站找到协议缓冲区是使用基于文本的模式定义的。如果您找到与该二进制文件对应的 Protocol Buffer 架构文档,将会很有帮助。

如果没有模式文件,您可以解码二进制文件,但这些文件将是无损的(没有字段名称,一些歧义)等。

您可以尝试将

carrier_list.pb
粘贴到此在线 Protocol Buffer Decoder 中。

还有另外两种方法可以使用 Protocol Buffers 工具 (

protoc
)。可以从 Protocol Buffers 存储库下载它。

cat /path/to/carrier_list.pb \
| protoc \
--decode_raw

如果你找到了模式,你可以使用

protoc
来解码同一个文件,但为你提供命令行会更困难,类似于:

cat /path/to/carrier_list.pb \
| protoc \
  --proto_path=/path/to/protos \
  --decode=package.Message \
  /path/to/protos/carrier.proto

或者,由于您引用了 Python,因此您可以使用 gRPC 工具(这基于协议缓冲区):

python3 -m pip install grpcio
python3 -m pip install grpcio-tools

cat /path/to/carrier_list.pb \
| python3 -m grpc_tools.protoc \
--decode_raw
© www.soinside.com 2019 - 2024. All rights reserved.