如何使用Python字典创建Protobuf结构?

时间:2019-05-25 09:55:19

标签: python-3.x dictionary struct protocol-buffers

我收到以下属性错误

  

AttributeError:“ Struct”对象没有属性“ fields”

如果我想使用google.protobuf.internal.well_known_types.Structupdate方法

Protobuf版本是3.71。


MWE

from google.protobuf.internal.well_known_types import Struct

s = Struct()
s.update({"key": "value"})

此问题的更大范围是,我想在python中创建一个带有google.protobuf.Struct字段的消息,以发送给传递给生成的RPC客户端。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

好的,写完问题后我立即发现了如何做。将答案留给可能最终遇到此问题的其他人。

我们必须从Struct导入google.protobuf.struct_pb2。这样update就可以正常工作。

因此

from google.protobuf.struct_pb2 import Struct

s = Struct()
s.update({"key": "value"})

将返回具有表示形式的对象

fields {
  key: "key"
  value {
    string_value: "value"
  }
}

答案 1 :(得分:0)

应该简单

from google.protobuf.struct_pb2 import Struct
from google.protobuf import json_format

s = Struct()
s.update({"key": "value"})

json_format.MessageToDict(s)