使用MsgPack Cli使用MsgPack而不是Json序列化c#对象

时间:2016-07-26 19:04:08

标签: c# json.net msgpack

我试图在c#中使用MsgPack实现一种JSON序列化 我可以使用MsggPack CLI找到 https://github.com/msgpack/msgpack-cli

根据msgpack.org文档,序列化模型

{"model":"message"}

给出hexa

81 a5 6d 6f 64 65 6c a7 6d 65 73 73 61 67 65

但尝试在c#中做同样的事情(当然是采用天真的方式)

using MsgPack.Serialization;

public class Test
{
    public string model { get; set; }
}       

public class Program
{
    static void Main(string[] args)
    {
        Test a = new Test();
        a.model = "message";

        var requestSerializer = MessagePackSerializer.Get(a.GetType());
        MemoryStream stream = new MemoryStream();
        requestSerializer.Pack(stream, a);
        byte[] res = stream.ToArray();
    }
}

我获得了

91 a7 6d 65 73 73 61 67 65

'模型'名称被跳过...

如何修复???

1 个答案:

答案 0 :(得分:1)

终于找到了简单的方法。 根据文档,序列化格式默认为' array'我需要的地方' map'。 使用

SerializationContext ctx = new SerializationContext() { SerializationMethod = SerializationMethod.Map };
...

var requestSerializer = MessagePackSerializer.Get(a.GetType(), ctx);

制作技巧。

此致