Генератор классов json ( + библиотека .NET)

  • Автор темы Автор темы Irval
  • Дата начала Дата начала
Олдфаг
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,842
Реакции
1,853
Если вы когда-нибудь работали с форматом JSON, то могли заметить, что достаточное количество времени занимает простое написание класса, с помощью которого вы десериализируете строку, а позже и сможете работать с определенным объектом. Похоже, Xamasoft тоже задумались над подобным вопросом и решили создать софт, позволяющий в несколько кликов получать класс, соответствующий примеру из документации (естественно, что если у вас нет полного возможного сериализованного объекта класса, программа работать не будет).
Софт работает на библиотеке NewtonSoft.JSON, поэтому все свойства будут создаваться библиотечным методом, при желании легко это переделать для своей либы.

Основной функционал:
  • Создание файла класса .cs с заданными параметрами:
    • Пространством имен
    • Названием главного класса (также изменяется название файла)
    • Папкой назначения файла
    • Языком файла (C#, Visual Basic .NET, TypeScript)
  • Настройка второстепенных классов
    • Использование вложенных классов
    • Использование одного/разных пространства имен
  • Изменение способа генерации члена класса (Property/Field)
  • Изменение видимости (Internal/Public)
  • Конвертация в PascalBase
  • Использование явной десериализации (+ не генерировать вспомогательные классы)
  • Применение обфускационных атрибутов исключения
  • Генерация единого файла
  • Генерация файла с примерами данных
  • Копирование класса в буфер обмена без создания доп. файла
Скриншоты работы программы:
1607110382307.png
Официальный сайт программы:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(более не поддерживается с 2017 года)
Исходный код:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Скачать собранную версию (+библиотека .NET):
Пожалуйста, авторизуйтесь для просмотра ссылки.

VT:
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.


Вместе с программой прилагается библиотека, на основе которой как раз софт и написан, вы тоже можете ей воспользоваться. Разработчик библиотеки все тот же - xamasoft.

P.S: У меня пока нет идей для новых уникальных ботом/программ, поэтому если хотите помочь, как мне, так и форуму - прошу вас отписать мне в Telegram с идеей для темы. Если предложение действительно стоящее - я обязательно его реализую.
 
Отлично написанный и полезный гайд, ставлю класс.
 
Пример работы программы с ответом от QIWI API (метод
Пожалуйста, авторизуйтесь для просмотра ссылки.
):
JSON:
Expand Collapse Copy
{
  "authInfo": {
    "boundEmail": "m@ya.ru",
    "ip": "81.210.201.22",
    "lastLoginDate": "2017-07-27T06:51:06.099Z",
    "mobilePinInfo": {
      "lastMobilePinChange": "2017-07-13T11:22:06.099Z",
      "mobilePinUsed": true,
      "nextMobilePinChange": "2017-11-27T06:51:06.099Z"
    },
    "passInfo": {
      "lastPassChange": "2017-07-21T09:25:06.099Z",
      "nextPassChange": "2017-08-21T09:25:06.099Z",
      "passwordUsed": true
    },
    "personId": 79683851815,
    "pinInfo": {
      "pinUsed": true
    },
    "registrationDate": "2017-01-07T16:51:06.100Z"
  },
  "contractInfo": {
    "blocked": false,
    "contractId": 79683851815,
    "creationDate": "2017-01-07T16:51:06.100Z",
    "features": [
    ],
    "identificationInfo": [
      {
        "bankAlias": "QIWI",
        "identificationLevel": "SIMPLE"
      }
    ]
  },
  "userInfo": {
    "defaultPayCurrency": 643,
    "defaultPaySource": 7,
    "email": null,
    "firstTxnId": 10807097143,
    "language": "string",
    "operator": "Beeline",
    "phoneHash": "lgsco87234f0287",
    "promoEnabled": null
  }
}
1607112188157.png
Итоговый класс объекта:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пример работы программы с ответом от QIWI API (метод https://developer.qiwi.com/ru/qiwi-wallet-personal/?http#profile):
JSON:
Expand Collapse Copy
{
  "authInfo": {
    "boundEmail": "m@ya.ru",
    "ip": "81.210.201.22",
    "lastLoginDate": "2017-07-27T06:51:06.099Z",
    "mobilePinInfo": {
      "lastMobilePinChange": "2017-07-13T11:22:06.099Z",
      "mobilePinUsed": true,
      "nextMobilePinChange": "2017-11-27T06:51:06.099Z"
    },
    "passInfo": {
      "lastPassChange": "2017-07-21T09:25:06.099Z",
      "nextPassChange": "2017-08-21T09:25:06.099Z",
      "passwordUsed": true
    },
    "personId": 79683851815,
    "pinInfo": {
      "pinUsed": true
    },
    "registrationDate": "2017-01-07T16:51:06.100Z"
  },
  "contractInfo": {
    "blocked": false,
    "contractId": 79683851815,
    "creationDate": "2017-01-07T16:51:06.100Z",
    "features": [
    ],
    "identificationInfo": [
      {
        "bankAlias": "QIWI",
        "identificationLevel": "SIMPLE"
      }
    ]
  },
  "userInfo": {
    "defaultPayCurrency": 643,
    "defaultPaySource": 7,
    "email": null,
    "firstTxnId": 10807097143,
    "language": "string",
    "operator": "Beeline",
    "phoneHash": "lgsco87234f0287",
    "promoEnabled": null
  }
}
Итоговый класс объекта: https://yadi.sk/d/wmhjb3uAV2JHdQ
Ухх ля какой, за примеры отдельная благодарность.
 
Назад
Сверху Снизу