反序列化自定义词典

时间:2019-06-21 22:31:18

标签: c# deserialization msgpack

我正在获取HttpResponse并尝试通过以下方式反序列化它:

response = (HttpWebResponse)request.GetResponse();
Stream objStream = response.GetResponseStream();
BinaryReader breader = new BinaryReader(objStream);
byte[] buffer = breader.ReadBytes((int)response.ContentLength);

格式为MsgPack。如果我调用以下代码,它将像这样为我提供JSON:

var unpackKNN = MessagePack.MessagePackSerializer.ToJson(buffer);

Json

{  
   "__schema":{  
      "__level0":"result|status",
      "__level1":"token|status|total|amount|details|id|name|category|cat|group",
      "__level2":"method|code|timestamp|result"
   },
   "data":[  
      "__level0",
      [  
         "__level1",
         "abcd",
         "true",
         100,
         200,
         "xyz",
         12345,
         "Giraffe",
         "1",
         "One",
         "First"
      ],
      [  
         "__level2",
         "request",
         "SUCCESS",
         15000000000,
         "Success"
      ]
   ]
}

如何继续将其反序列化为JSON数组或动态对象?我需要编写适合消息结构的解析器吗?

希望对此有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用Newtonsoft.Json nuget中的JsonConvert.DeserializeObject方法。

请注意,它有几个重载,一个非通用重载,它将ur json反序列化为.Net对象,以及一个通用重载,将尝试将json转换为您创建的任何类型