如何在C#中使用MessagePack序列化混合类型对象数组

时间:2014-01-27 01:34:16

标签: c# serialization msgpack

我有一个通过TCP / IP方法进行通信的应用程序,需要将一些数据序列化到设备上。

在应用程序中,我想序列化一个混合类型的对象数组,其中包括string,double数组和一些integer..etc。例如,我想序列化数据,其中:

数据= [size,mainmsg];其中size是int16,mainmsg是一个字符串。

我查看了以下参考资料 http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+C+Sharp

在我看来,如果我的对象数组中有字符串,BoxingPacker会在解压缩时抛出异常。

我想问一下,如果我有一个混合型对象数组,[5,“D1”],最好的是什么 使用msgpack进行序列化的方法(在c#中)? (此包是设计的,不能改变其他序列化方法)

现在,我使用BoxingPacker打包我的整数,并使用ObjectPacker打包我的字符串,例如:

size = 1;
msg = "D1"

BoxingPacker intpacker = new BoxingPacker();
packedsize = intpacker.Pack(size);

ObjectPacker packer = new ObjectPacker();
packedmsg = packer.Pack<String>(msg);

然后我使用Buffer.BlockCopy将二进制数据(packedsize + packedmsg)组合在一起。

我正在寻找是否有一种简单的方法可以做到这一点?也许我错过了什么,但除了上面粘贴的链接外,我找不到任何文档。任何指导都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您只需要序列化一个对象数组

size = 1;
msg = "D1"

object[] objs = new object[] { size, msg };

ObjectPacker packer = new ObjectPacker();
packedmsg = packer.Pack<object[]>(objs);