Использование HttpClient в WinForms: можно ли проанализировать результат JSON, используя привязку модели, аналогичную найденной в Web API
Я предполагаю, что пытаюсь взаимодействовать с веб-API, как если бы это были дни веб-службы SOAP xml..., где был создан прокси-объект CLR на основе WSDL после общения с сервером через HTTP. Я не с нетерпением жду перехода к ответу JSON с использованием JSON.NET, но, если потребуется, я сделаю это.
Итак... как мы все знаем (все мы веб-разработчики ASP.NET) - мы можем использовать веб-API (и веб-API 2 и т. Д.), Чтобы просто ПОСТАВИТЬ JSON в контроллер API и привязку модели (err.. привязку параметра)?) способен анализировать это в моем предпочтительном объекте CLR.
Допустим, у меня теперь есть клиент WinForms, который хочет взаимодействовать с моим модным сервером веб-API - и я предполагаю, что мне следует поговорить с этим веб-API с помощью HttpClient
Есть ли предпочтительный способ взаимодействия с веб-API для получения объекта CLR из него? Я предполагаю, что я собираюсь получить JSON из этого, что я должен затем привязать к объекту CLR... и это мой главный вопрос... как я могу сделать то же самое создание CLR-from-JSON на моем клиенте, что Я вижу, что происходит, когда я отправляю JSON на сервер.
ОБНОВИТЬ
Ключевой термин, о котором я не думал, когда впервые написал этот вопрос, это "десериализация"... теперь я нахожу такие результаты, как JsonConvert.DeserializeObject<MyObj>(json);
а также System.Web.Script.Serialization.JavaScriptSerializer
Все еще любопытно, есть ли предпочтение там -
1 ответ
Вы можете (попытаться) прочитать содержимое ответа HttpClient как любой объект. Вот пример метода
public async Task<List<GroupListViewRow>> ListAccountGroupAsync(Guid ledgerId) {
var response = await this.http.GetAsync($"v1/group/list?ledgerId={ledgerId}");
response.EnsureSuccessStatusCode();
var res = await response.Content.ReadAsAsync<List<GroupListViewRow>>();
return res;
}
Этот читает ответ, как будто это List<GroupListViewRow>