Содержание
При работе с 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#.