如何在 grpc 的 protobuf 中使用 dict 定义 Python 的列表?



in .proto:

message HelloReplyList { repeated string message = 1; }

以下代码工作正常

def SayHelloList(self, request, context):
l = ['a', 'b', 'c']
return helloworld_pb2.HelloReplyList(message=l)

以下代码工作错误: 类型错误: {'a': '1'} 具有类型字典,但应为以下类型之一:字节、Unicode

def SayHelloList(self, request, context):
d = [{'a': '1'}, {'b': '2'}]
return helloworld_pb2.HelloReplyList(message=d)

如果我想使用[{'a':'1'},{'b':'2'}]. 如何在.proto中定义?

我不认为protobuf python接受[{'a':'1'},{'b':'2'}]。 {'a':'1'} 可以是 protobuf 中的映射字段,[] 是一个列表。我们不支持重复的地图字段。

如果数据是 {'a':'1', 'b':'2'},那么您可以定义 .proto 文件,如下所示: 消息 HelloReplyList { map map_field = 1; }

最新更新