我试图弄清楚protobuf描述符或对象是否可以从由prototool
生成的pb2
文件转换为JSON/Dict Python对象。这就是我到目前为止所做的:
config.proto
文件,其中TopConfig
作为我的消息李>prototool generate config.proto
生成config_pb2.py
李>TopConfig
from google.protobuf.json_format import MessageToDict, MessageToJson
import config_pb2.py
j = MessageToJson(config_pb2.py.TopConfig())
d = MessageToDict(config_pb2.py.TopConfig())
这导致在这两种情况下都有一个空的{}
字典。我错过了什么
好吧,我自己想出来了
我的错误是,我的
TopConfig
中只嵌套了其他messages
,而没有其他数据字段MessageToDict
只适用于未列出的messages
,它也不会显示enum
和oneof
数据请注意,它不会显示
nested messages
、enum
和oneof
,您可以很容易地用逻辑检查它们希望这篇文章能帮助其他人
json_format
将省略“未设置”字段。在您的示例中,TopConfig()
创建了一个空的TopConfig
实例,即没有设置任何字段。因此,{}
是该对象的正确JSON表示然而,有一个^{} 到
MessageToDict
几乎就是您想要的:我之所以说“几乎”,是因为空的子消息字段仍然不存在
相关问题 更多 >
编程相关推荐