根据手册,Protobuf 3.0.0 支持 JSON 序列化:
JSON 中定义明确的编码,作为二进制 proto 编码的替代方案。
我试过什么
json.dumps(instance)
这提出了TypeError(repr(o) + " is not JSON serializable")
- 寻找
instance.to_json()
(或类似的)功能 - 搜索了 Python 文档
如何将 Python 原型对象序列化为 JSON?
根据手册,Protobuf 3.0.0 支持 JSON 序列化:
JSON 中定义明确的编码,作为二进制 proto 编码的替代方案。
我试过什么
json.dumps(instance)
这提出了TypeError(repr(o) + " is not JSON serializable")
instance.to_json()
(或类似的)功能如何将 Python 原型对象序列化为 JSON?
我错误地安装了protobuf3
- 我以为它是protobuf3
Python 包,但它是一个非官方的Python 3 protobuf 2 包,而不是相反。在开始之前将其删除。
经过反复试验,以下解决方案有效。如果有的话,请随意发布更好的/官方的。
protobuf2
(我用过brew uninstall
)。确保protoc
没有出现在路径中。protobuf3
二进制文件。还没有自制软件包,所以我使用了 OSX 二进制文件protoc-3.0.0-osx-x86_64.zip
。make
脚本也是一种选择
。bin
目录内容复制到/usr/local/bin
include
到/usr/local/include
protoc --version
应该显示libprotoc 3.0.0
.protobuf
/tmp
cd protobuf-master/python && setup.py install
相关功能MessageToJson
在google.protobuf.json_format module
:
from google.protobuf import json_format
o = SomeProtobufClass()
print json_format.MessageToJson(o)
{
...
}
MessageToJson
模块中有一个功能json_format
。该函数可用于序列化消息。