2016-07-26 8 views
2

Ich versuche, eine Art von JSON Serialisierung # mit MsgPack in c acheive I MsggPack CLI bin mit Sie finden können auf https://github.com/msgpack/msgpack-cliSerialize C# Objekt mit MsgPack statt Json mit MsgPack Cli

Nach msgpack.org Dokumentation, serialisiert das Modell

{"model":"message"} 

in hexa geben

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

aber beim Versuch, die sam zu tun e in C# (sicherlich mit einem naiven Ansatz)

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(); 

     } 
} 

I

91 a7 6d 65 73 73 61 67 65 

, wo der 'Modell' Name übersprungen ...

Wie beheben es erhalten ???

Antwort

1

Endlich den einfachen Weg gefunden. Gemäß der Dokumentation ist das Serialisierungsformat standardmäßig 'array', wo ich 'map' brauche. mit

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

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

machen Sie die Tricks.

Grüße

Verwandte Themen