如何在 python 中编码 protobuf 映射?
How to encode protobuf map in python?
我正在使用 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)
当我尝试在服务器中接收消息时,我得到了错误的值(巨大的数字!)。
对此的任何帮助将不胜感激。
您可以尝试使用 python 字典来解决这个问题:
map1 = {}
obj1 = value_obj()
map1[1] = obj1
map2 = {}
listOfMaps = list_of_maps(mapObj1=map1, mapObj2=map2)
我正在使用 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)
当我尝试在服务器中接收消息时,我得到了错误的值(巨大的数字!)。 对此的任何帮助将不胜感激。
您可以尝试使用 python 字典来解决这个问题:
map1 = {}
obj1 = value_obj()
map1[1] = obj1
map2 = {}
listOfMaps = list_of_maps(mapObj1=map1, mapObj2=map2)