我正在尝试使用 c# 中的 MsgPack 实现一种 JSON 序列化 我正在使用 MsggPack CLI,您可以在 https://github.com/msgpack/msgpack-cli
根据msgpack.org文档,序列化模型
{"model":"message"}
给出十六进制
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
其中“模型”名称被跳过...
如何解决???
最佳答案
终于找到简单的方法了。 根据文档,序列化格式默认为“数组”,我需要“ map ”。 使用
SerializationContext ctx = new SerializationContext() { SerializationMethod = SerializationMethod.Map };
...
var requestSerializer = MessagePackSerializer.Get(a.GetType(), ctx);
发挥技巧。
问候
关于c# - 使用 MsgPack 序列化 c# 对象,而不是使用 MsgPack Cli 序列化 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597954/