Десериализация пользовательского словаря - PullRequest
0 голосов
/ 22 июня 2019

Я получаю 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 Ответ

1 голос
/ 22 июня 2019

Вы можете использовать метод JsonConvert.DeserializeObject из nuget Newtonsoft.Json.

Обратите внимание, что он имеет несколько перегрузок, не являющихся общими, которые десериализуют ваш json в .Netобъект, и общие, которые будут пытаться преобразовать вас JSON в любой тип, который вы создали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...