Как изменить протокол-буфер ScalarMapContainer в Python? - PullRequest
0 голосов
/ 24 марта 2020

Я пытался добавить значения в ScalarMapContainer в Python. Этот объект был автоматически сгенерирован библиотекой Google Protobuf3 из .proto:

map<string, string> mapName = 4;

Согласно скудным документам, я обнаружил, что ScalarMapContainer должен работать в основном как обычный dict, но не.

Я пытался получить к нему доступ как обычный дикт Я глубоко скопировал это, затем назвал MergeFrom на копии. Я также создал новый ScalarMapConatiner, который затем называется MergeFrom, на нем.

# normal dict
x.mapName["key"] = "value"
from google.protobuf.json_format import MessageToJson 
print(MessageToJson(x)) # key/value not present

# deep copy
copy = deepcopy(x.mapName)
copy["key"] = "value"
x.mapName.MergeFrom(copy)
print(MessageToJson(x)) # key/value not present

# new object
myMap = ScalarMapContainer()
myMap["key"] = "value"
x.mapName.MergeFrom(myMap) # crashes

Я не уверен, что еще можно попытаться заставить это работать.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...