根据the manual,Protobuf 3.0.0支持JSON序列化:
JSON中定义良好的编码,作为二进制原型编码的替代方法。
我尝试了什么
json.dumps(instance)
提出了TypeError(repr(o) + " is not JSON serializable")
instance.to_json()
(或类似)功能如何将Python proto对象序列化为JSON?
答案 0 :(得分:3)
MessageToJson
模块中有一个函数json_format
。此函数可用于序列化消息。
答案 1 :(得分:3)
我错误地安装了protobuf3
- 我认为它是protobuf3
Python包,但它是一个非官方的 Python 3 protobuf 2包,而不是相反。在开始之前将其删除。
经过一些试验和错误后,以下解决方案有效。如果您有任何更好/官方的,请随意发布。
protobuf2
(我使用brew uninstall
)。确保protoc
未显示在路径中。protoc-3.0.0-osx-x86_64.zip
。 make
脚本也是一个选项。
bin
目录的内容复制到/usr/local/bin
include
的内容复制到/usr/local/include
protoc --version
应显示libprotoc 3.0.0
。protobuf3
下载到/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)
{
...
}