使用protobuf反序列化对象列表
我正在用C#搭建一个服务器,并用Python写一个客户端,二者通过套接字进行通信。服务器会把一串对象的列表发送给客户端,但我不知道(也找不到)在Python中怎么把这个列表反序列化。任何帮助都非常感谢。
2 个回答
2
看看这个:
“协议缓冲区的线格式不是自我分隔的,所以协议缓冲区解析器无法自己判断一条消息在哪里结束。解决这个问题最简单的方法是在写消息之前,先写下每条消息的大小。当你再读取这些消息时,先读取大小,然后把字节读入一个单独的缓冲区,再从这个缓冲区解析数据。”
https://developers.google.com/protocol-buffers/docs/techniques
18
好的,我找到了一个解决办法,如果有人感兴趣的话。诀窍是创建一个新的消息类型,并把原来的消息作为重复项添加进去。具体步骤如下:
message TransactionPackets {
repeated TransactionPacket packet = 1;
}
message TransactionPacket {
required int32 trans_id = 1;
required string user_id = 2;
required int64 date = 3;
}
现在我可以通过调用 TransactionPackets.ParseFromString() 来简单地将一系列对象转换回来。