JSON в типы: TypeScript, Swift, Kotlin и другие

Вставьте пример JSON и получите определения типов на 8 языках. Работает на движке quicktype.

Работает полностью в браузере. Введённые данные не отправляются и не сохраняются.

Как пользоваться

  1. Вставьте пример JSON, например ответ API, в левое поле.
  2. Выберите целевой язык и при желании имя корневого типа.
  3. Нажмите «Преобразовать». Вложенные объекты станут отдельными типами.
  4. Скопируйте код или скачайте его как исходный файл.

Писать модели вручную для каждого ответа API долго, и легко ошибиться. Этот конвертер JSON в типы читает пример и генерирует подходящий код: интерфейсы TypeScript, структуры Swift с Codable, data class Kotlin, классы Dart, структуры Go с тегами json, dataclass Python, а также классы C# и Java. Каждый вложенный объект становится отдельным именованным типом, массивы — типизированными списками, а имена ключей приводятся к стилю целевого языка; исходный ключ JSON сохраняется там, где он нужен.

Преобразование выполняет quicktype-core — открытый движок quicktype (Apache License 2.0), который загружается на страницу при первом нажатии «Преобразовать». С галочкой «Только типы» вы получаете чистые объявления типов. Для Swift сохраняются Codable и CodingKeys, а убираются только вспомогательные инициализаторы. Если снять галочку, добавятся вспомогательные функции разбора, которые quicktype пишет по умолчанию: класс Convert в TypeScript, аннотации Jackson в Kotlin или from_dict в Python.

Типы выводятся из примера, поэтому используйте данные, где видны все поля. Значение null даёт необязательный тип или any, числа без дробной части становятся целыми, а объекты одинаковой формы в разных местах могут объединяться в один тип. Ваш JSON не покидает браузер: разбор и генерация кода выполняются на устройстве, ничего не загружается и не сохраняется.

Частые вопросы

Отправляется ли мой JSON на сервер?

Нет. quicktype-core работает в браузере. Вставленный JSON никуда не загружается и не сохраняется.

Почему поле получилось any или необязательным?

В примере значение было null или отсутствовало в части объектов. С реальными значениями получится конкретный тип.

Использует ли вывод Swift протокол Codable?

Да. Структуры Swift соответствуют Codable и содержат CodingKeys, связанные с исходными ключами JSON.

Можно получить data class Kotlin без библиотек?

Да. Оставьте галочку «Только типы» — будут простые data class. Без неё добавятся аннотации Jackson и вспомогательный код.

Похожие инструменты