Словарь в буферах протокола - PullRequest
21 голосов
/ 16 ноября 2010

Есть ли способ сериализации словаря с использованием буферов протокола, или мне придется использовать Thrift, если мне это нужно?

Ответы [ 3 ]

34 голосов
/ 17 ноября 2010

Люди обычно записывают словарь в виде списка пар ключ-значение, а затем перестраивают словарь на другом конце.

message Pair {
   optional string key = 1;
   optional string value = 2;
}

message Dictionary {
   repeated Pair pairs = 1;
}
25 голосов
/ 14 ноября 2016

Для будущих искателей ответов ProtoBuf теперь поддерживает Карты изначально:

message MapMessage
{
    map<string, string> MyMap = 1;
}
0 голосов
/ 16 ноября 2015

Вы можете проверить пакет ProtoText .

Предположим, вы хотите сериализовать dict person_dict в заранее определенный объект PersonBuf protobuf, определенный в модуле personbuf_pb2.

В этом случае, чтобы использовать ProtoText,

import ProtoText
from personbuf_pb2 import PersonBuf

obj = PersonBuf()
obj.update(person_dict)
...