Gibt es eine Möglichkeit, ein Wörterbuch mit Protokollpuffern zu serialisieren, oder muss ich Thrift verwenden, wenn ich das brauche?Wörterbuch in Protokollpuffern
Antwort
Die Benutzer schreiben das Wörterbuch normalerweise als eine Liste von Schlüssel/Wert-Paaren auf und erstellen das Wörterbuch am anderen Ende neu.
message Pair {
optional string key = 1;
optional string value = 2;
}
message Dictionary {
repeated Pair pairs = 1;
}
Gibt es eine Möglichkeit, das Gleiche mit einem dynamischen Typ zu tun? Ich habe eine 'Dictionary
Nun, nein. Protobuf ist kein allgemeines Objektserialisierungsprotokoll. Sie müssen Protobuf-Nachrichten für alle Daten definieren, die Sie serialisieren möchten. (Ehrlich gesagt, wenn Sie eine
@Mike Sie müssten ein Feld für jeden Typ erstellen, der * sein * könnte, auf den ein Fehler wartet geschehen. –
Sie können das Paket ProtoText überprüfen.
Angenommen, Sie möchten ein Diktat person_dict
in ein vordefiniertes PersonBuf
protobuf-Objekt serialisieren, das im personbuf_pb2
-Modul definiert ist.
In diesem Fall Proto zu verwenden,
import ProtoText
from personbuf_pb2 import PersonBuf
obj = PersonBuf()
obj.update(person_dict)
Für zukünftige Antwort Suchende, ProtoBuf now supports Maps nativ:
message MapMessage
{
map<string, string> MyMap = 1;
}
Bitte beachten Sie, dass Karten immer noch nicht wiederholt werden können. – mattes
duplizieren http://stackoverflow.com/questions/3874024/how-does- protobuf-net-support-for-dictionary-keyvaluepair-funktioniert –
Nicht wirklich duplizieren. Diese Frage handelte von den .net-Bindings. OP spezifiziert keine Sprachumgebung. – JesperE