2016-07-26 2 views
2

Я пытаюсь для того чтобы достигнуть своего рода JSON сериализации с помощью MsgPack в C# Я использую MsggPack CLI вы можете найти на https://github.com/msgpack/msgpack-cliSerialize C# объект с использованием MsgPack вместо Json с помощью 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 

где пропущено название 'модель' ...

Как это исправить ???

ответ

1

Наконец-то нашел легкий путь. Согласно документации, формат сериализации по умолчанию является «массивом», где мне нужна «карта». с использованием

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

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

сделать трюки.

С уважением

 Смежные вопросы

  • Нет связанных вопросов^_^