Распаковка сгенерированного Python MessagePack в C# приводит к "Unpacker не находится в заголовке массива"
Я пытаюсь отправить сообщение из кода Python на C# через ZeroMQ. Я использую следующую структуру данных в Python:
message = msgpack.packb(
(
{"message_id": "1001", "type": "GET", "namespace": "DocumentManager"},
"MdiActiveDocument",
["parameter1", "parameter2"]
)
)
message = msgpack.packb(message)
alive_socket.send(message)
Попытка распаковать его с помощью C#, используя этот код:
var message = new byte[500];
int result = this.Client.Receive(message);
var serializer =
MessagePackSerializer.Get<Tuple<Dictionary<string,string>, String, List<String>>>();
var reply = serializer.UnpackSingleObject(message);
Это приводит к этой ошибке:
Additional information: Unpacker is not in the array header.
The stream may not be array.
Я попытался упростить структуру данных, но я все еще не могу понять это правильно. Возможно, мое использование MsgPack некорректно. Заранее благодарю за любую помощь.
1 ответ
Решение
Обновление: реальная причина была намного, намного тупее, чем это объяснение, которое я удалил. Я дважды вызывал packb() в исходном коде.