gpt4 book ai didi

python - Protobuf3 : Serialize a Python object to JSON

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:33 26 4
gpt4 key购买 nike

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

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

我尝试了什么

  • json.dumps(instance) 引发了 TypeError(repr(o) + "is not JSON serializable")
  • 寻找 instance.to_json()(或类似的)函数
  • 搜索 Python 文档

如何将 Python 原型(prototype)对象序列化为 JSON?

最佳答案

注意事项

我错误地安装了 protobuf3 - 我以为它是 protobuf3 Python 包,但它是一个非官方的 Python 3 protobuf 2 包 ,而不是相反。在开始之前将其删除。

解决方案

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

先决条件:Protobuf 3

  • 删除 protobuf2(我使用了 brew uninstall)。确保 protoc 没有出现在路径中。
  • 安装 protobuf3二进制文件。目前还没有自制包,所以我使用了 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 protobuf/tmp
  • 激活虚拟环境
  • cd protobuf-master/python && setup.py install

代码

相关函数是google.protobuf.json_format模块中的MessageToJson:

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

关于python - Protobuf3 : Serialize a Python object to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com