Я пытаюсь создать поле в protobuf, чтобы клиент мог передать произвольное значение ключа, чтобы сервер мог прочитать это поле. Я знаю, что в protobuf есть карта и структура, но я не вижу между ними разницы. Любые идеи? И клиент, и сервер на питоне.
Структура против карты в protobuf
comment
AFAIK, структура - это в основном карта с определенными ключами.
- person OneCricketeer   schedule 09.10.2020
comment
@OneCricketeer Я так не думаю. Как в developers.google.com/protocol-buffers/docs/ reference/, мы можем использовать произвольные ключи в структуре
- person CipherText   schedule 09.10.2020
Ответы (1)
Структура строго определена как map<string, Value>
, сопоставленная с Value
типы, например. (простое) определение класса Python
карта Protobuf может поддерживать не только строковые ключи , например dict
person
OneCricketeer
schedule
09.10.2020
Я понимаю. Но когда я использую
map<string, google.protobuf.Any> extras
, как-то. extras.update()
выдает ошибку Direct assignment of submessage not allowed
. Не уверен, что это связано с google.protobuf.Any
? Значение, которое я использовал, это питон List
- person CipherText; 09.10.2020
Вы можете иметь
map<string, ListValue>
?
- person OneCricketeer; 09.10.2020
Я хочу сделать тип значения произвольным, чтобы другие люди могли передавать другую пару значений ключа.
- person CipherText; 09.10.2020
Значение представляет собой динамически типизированное значение, которое может быть нулевым, числом, строкой, логическим значением, значением рекурсивной структуры или списком значений, который исключает несколько типов Any.
- person OneCricketeer; 11.10.2020