Как создать класс C# из JSON?

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

  1. Копируем JSON в буфер обмена
  2. В Visual Studio создаем проект, ставим курсор в любом месте, в котором необходимо вставить класс C#, полученный из JSON
  3. В главном меню Visual Studio выбираем «Правка -> Специальная вставка -> Вставить JSON как классы»

JSON как класс C#

В результате, 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.

json2csharpСмысл работы этого онлайн-сервиса точно такой же, как и у инструмента Visual Studio — по полученному JSON сформировать один или несколько классов C#. При этом в  json2csharp.com мы можем также задать настройки преобразования, например, добавить к свойствам классов атрибуты JsonProperty для настройки сериализации и десериализации. Полученные классы можно просто скопировать в буфер обмена или загрузить в виде уже готового файла *.cs в котором в заданном вами пространстве имен будут располагаться полученные из JSON классы C#.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии