Protobuf3:将Python对象序列化为JSON

2024-04-30 03:56:40 发布

您现在位置:Python中文网/ 问答频道 /正文

根据the manual,Protobuf 3.0.0支持JSON序列化:

A well-defined encoding in JSON as an alternative to binary proto encoding.

我尝试了什么

  • json.dumps(instance)引发{}
  • 寻找instance.to_json()(或类似)函数
  • 搜索了Python文档

如何将Python proto对象序列化为JSON?


Tags: thetoinstanceinanjson序列化as
2条回答

json_format模块中有一个函数MessageToJson。此函数可用于序列化消息。在

注意事项

我错误地安装了protobuf3-我以为它是protobuf3Python包,但它是一个非官方的python3protobuf2包,而不是相反。在你开始之前把它取下来。在

解决方案

经过一番反复试验,以下解决方案奏效了。如果你有更好的/官方的,请随时发布。在

先决条件:Protobuf3

  • 删除protobuf2(我使用了brew uninstall)。确保protoc不出现在路径中。在
  • 安装^{}二进制文件。还没有自制软件包,所以我使用了OSX二进制文件protoc-3.0.0-osx-x86_64.zipmake脚本也是一个选项。
    • bin目录的内容复制到/usr/local/bin
    • include的内容复制到/usr/local/include
  • 确保protobuf3已安装-protoc version应该显示libprotoc 3.0.0。在

Python安装

  • 创建虚拟环境
  • master branch of ^{}下载到/tmp
  • 激活虚拟环境
  • cd protobuf-master/python && setup.py install

代码

相关函数是google.protobuf.json_format module中的MessageToJson

from google.protobuf import json_format
o = SomeProtobufClass()
print json_format.MessageToJson(o)
{
...
}

相关问题 更多 >