如何在python中编码protobuf地图?

时间:2018-01-17 04:59:40

标签: protocol-buffers grpc

我使用protobuf和grpc作为客户端和服务器之间的接口。 服务器用C语言编写,客户端使用python与服务器通信。

我在protobuf中创建了一条消息,如下所示。

message value_obj {
    uint32 code = 1;
    uint32 value = 2;
}

message list_of_maps {    
    map<uint32, value_obj> mapObj1 = 1;    
    map<uint32, value_obj> mapObj2 = 2; 
}

我尝试用Python创建对象,如下所示:

obj = list_of_maps()
mapObjToStore = value_obj()
mapObjToStore.code = 10
obj.mapObj1[1].CopyFrom(mapObjToStore)

当我尝试在服务器中接收消息时,我得到错误的值(数字很大!)。 任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用python词典:

map1 = {}
obj1 = value_obj()
map1[1] =  obj1
map2 = {}
listOfMaps = list_of_maps(mapObj1=map1, mapObj2=map2)