Содержание
При работе с JSON в C#, особенно при реализации различных API онлайн-сервисов, часто приходится по полученному ответу сервера в формате JSON сформировать классы для работы. Для этой задачи можно самостоятельно разобрать полученный JSON (который может быть достаточно сложным) и затем, вручную воссоздать аналогичную структуру в C#. А можно решить задачу создания класса C# из JSON более лёгким и быструм способом.
Пример JSON для работы
Для начала, возьмем следующим JSON из которого будем формировать класс C#:
{
"current_page": 1,
"data": [
{
"id": 1,
"code": "01",
"name": "Растениеводство и животноводство, охота и предоставление соответствующих услуг в этих областях",
"okved_id": null
},
{
"id": 2,
"code": "01.1",
"name": "Выращивание однолетних культур",
"okved_id": 1
},
{
"id": 3,
"code": "01.11",
"name": "Выращивание зерновых (кроме риса), зернобобовых культур и семян масличных культур",
"okved_id": 2
}
],
"first_page_url": "/api/svc/nsi/okveds?page=1",
"from": 1,
"last_page": 929,
"last_page_url": "/api/svc/nsi/okveds?page=929",
"links": [
{
"url": null,
"label": "« Назад",
"active": false
},
{
"url": "/api/svc/nsi/okveds?page=1",
"label": "1",
"active": true
},
{
"url": "/api/svc/nsi/okveds?page=2",
"label": "2",
"active": false
}
],
"next_page_url": "/api/svc/nsi/okveds?page=2",
"path": "/api/svc/nsi/okveds",
"per_page": 3,
"prev_page_url": null,
"to": 3,
"total": 2786
}
Этот JSON представляет собой отдельную страницу справочника с кодами ОКВЭД. Как можно видеть, JSON содержит и строки и числа и массивы объектов. Теперь попробуем перевести этот JSON в класс C#.
Как создать класс C# из JSON в Visual Studio
В Visual Studio имеется встроенный инструмент, преобразующий JSON в класс C#.
- Копируем JSON в буфер обмена
- В Visual Studio создаем проект, ставим курсор в любом месте, в котором необходимо вставить класс C#, полученный из JSON
- В главном меню Visual Studio выбираем «Правка -> Специальная вставка -> Вставить JSON как классы»
В результате, Visual Studio сформирует из JSON следующие классы C#:
public class Rootobject
{
public int current_page { get; set; }
public Datum[] data { get; set; }
public string first_page_url { get; set; }
public int from { get; set; }
public int last_page { get; set; }
public string last_page_url { get; set; }
public Link[] links { get; set; }
public string next_page_url { get; set; }
public string path { get; set; }
public int per_page { get; set; }
public object prev_page_url { get; set; }
public int to { get; set; }
public int total { get; set; }
}
public class Datum
{
public int id { get; set; }
public string code { get; set; }
public string name { get; set; }
public int? okved_id { get; set; }
}
public class Link
{
public string url { get; set; }
public string label { get; set; }
public bool active { get; set; }
}
И нам остается только немного подредактировать эти классы, чтобы они соответствовали правилам оформления кода C#, например, сделать названия свойств с заглавной буквы и т.д. Если не устраивают массивы в классе Rootobject, то их можно спокойно заменить на список List — в дальнейшем это никак особо не повлияет на десериализацию JSON.
Как создать класс C# из JSON в онлайн
В Сети можно также встретить достаточно много различных онлайн-сервисов, позволяющих создавать из JSON классы C#, например, https://json2csharp.com.
Смысл работы этого онлайн-сервиса точно такой же, как и у инструмента Visual Studio — по полученному JSON сформировать один или несколько классов C#. При этом в json2csharp.com мы можем также задать настройки преобразования, например, добавить к свойствам классов атрибуты JsonProperty для настройки сериализации и десериализации. Полученные классы можно просто скопировать в буфер обмена или загрузить в виде уже готового файла *.cs в котором в заданном вами пространстве имен будут располагаться полученные из JSON классы C#.
