我试图在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
'模型'名称被跳过...
如何修复???
答案 0 :(得分:1)
终于找到了简单的方法。 根据文档,序列化格式默认为' array'我需要的地方' map'。 使用
SerializationContext ctx = new SerializationContext() { SerializationMethod = SerializationMethod.Map };
...
var requestSerializer = MessagePackSerializer.Get(a.GetType(), ctx);
制作技巧。
此致