UseDevTools:/blog/razbor_json_wcf_data

Представим следующую ситуацию.

У нас есть адрес веб-сервиса (wcf), из которого нам необходимо получить данные в JSON формате и, например, сложить их в базу данных, после некоего преобразования. Код необходимо написать на языке c#.

Основная проблема, с которой мы столкнёмся при решении этой задачи - как нам распарсить данные, пришедшие в JSON строке.

Заранее структура данных нам неизвестна, но мы можем попытаться вытащить из сервиса данные, сделав допущение, что в нашей экспериментальной выборке придут все поля, которые в последствии будут описывать реальные данные.

Для решения этой задачи воспользуемся Microsoft Visual Studio 2017 и фреймворком Json.NET (Newtonsoft.Json).

У нас есть код, где мы обращаемся к веб-сервису:

using JsonService.SvcPersons;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace JsonService.Code
{
public class CodePersons
{
public string GetFirmPersons(int count)
{
ServicePersonsClient personClient = new ServicePersonsClient();
string json = personClient.GetPersons(count);
return json;
}
}
}

Будем вызывать этот метод с параметром “2”, для нашего примера этого будет достаточно. Запустим наше приложение в режиме отладки.

Поставим точку остановки на строчке кода return json;

Вот что мы увидим в процессе выполнения приложения:

Скопируем полученную строку в буфер обмена.

Далее, создадим файл с именем Persons.cs, и, будучи внутри этого файла, выберем в меню Visual Studio следующий пункт:

После чего имеем сформированные классы:

public class Rootobject
{
public string FirmName { get; set; }
public Person[] Persons { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string SecondName { get; set; }
public int Age { get; set; }
public Homeaddress HomeAddress { get; set; }
public Workaddress WorkAddress { get; set; }
}
public class Homeaddress
{
public string City { get; set; }
public string Street { get; set; }
}
public class Workaddress
{
public string City { get; set; }
public string Street { get; set; }
}

Если, в силу каких то причин, вы не можете воспользоваться инструментом Visual Studio, то существуют множество online сервисов, где вы также можете получить c# классы. Например, можете воспользоваться инструментарием нашего портала.

Имея c# класс мы создадим объект этого класса, и, при помощи библиотеки Newtonsoft.Json, наполним его данными вебсервиса:

public Rootobject GetFirmPersons(int count)
{
ServicePersonsClient personClient = new ServicePersonsClient();
string json = personClient.GetPersons(count);
Rootobject firm = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(json);
return firm;
}

В результате имеем:

 

Теперь вы можете использовать полученные данные в соответствии с вашей задачей.

Данный инструмент из Visual Studio, также позволяет создавать классы на языке VB.NET, а в качестве источника использовать как JSON так и XML.

18.10.2017

Добавить комментарий