DT Dev Tools

Конвертер JSON в Swift Codable — генератор моделей

Преобразуйте JSON в структуры или классы Swift Codable онлайн с CodingKeys, optional-типами и вложенными типами. Готово для JSONDecoder — бесплатно и приватно.

🔒 Работает полностью в вашем браузере — ничего не загружается

Реклама

Модели Swift Codable из JSON

Протокол Codable в Swift сводит декодирование JSON к одной строке — как только у вас есть типы, точно соответствующие полезной нагрузке. Этот конвертер JSON в Swift генерирует такие типы по образцу. Каждый объект становится struct (или class), соответствующим Codable, ключи становятся свойствами в camelCase, вложенные объекты — собственными типами, массивы — типизированными массивами Swift, а значения, отсутствующие или равные null в части образца, становятся optional. Явные перечисления CodingKeys сопоставляют каждое свойство с исходным ключом JSON, так что API со snake_case декодируются без какой-либо собственной стратегии.

Движок под капотом — quicktype, который объединяет все элементы каждого массива перед выводом типов. Поле, встречающееся лишь в некоторых элементах, всё равно становится optional-свойством, что избавляет от страшной ошибки декодирования keyNotFound во время выполнения.

Структуры, классы и вспомогательные методы

Структуры выбраны по умолчанию, потому что типы-значения идиоматичны для моделей в SwiftUI и большей части современного кода iOS и macOS. Переключитесь на классы, когда нужна семантика ссылок или совместимость с Objective-C. По умолчанию вывод также содержит удобные вспомогательные методы — инициализаторы из данных и строк JSON, методы jsonData() и jsonString() и мутатор with(...) — которые облегчают использование моделей в тестах и превью. Отметьте Types only, если вам по душе минимальный файл только с объявлениями Codable.

Советы перед вставкой в Xcode

Используйте богатый образец с несколькими элементами массива и заполненными необязательными полями. Переименуйте корневой тип из Root во что-то осмысленное, например FeedResponse; скачанный файл получит это имя. После этого подумайте о преобразовании строковых полей с известными значениями в enum, использовании Date с соответствующей dateDecodingStrategy и пометке свойств как var, где нужна мутация. Всё происходит локально в вашем браузере, так что приватные ответы API никогда не загружаются.

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

  1. Вставьте JSONВставьте ответ JSON или загрузите образец.
  2. Выберите стильВыберите struct или class, CodingKeys и то, добавлять ли вспомогательные методы.
  3. Скопируйте в XcodeСкопируйте код Swift или скачайте файл .swift для вашего проекта.

Часто задаваемые вопросы

Являются ли сгенерированные типы Codable?
Да. Каждая структура или класс соответствует Codable, так что вы можете сразу декодировать их с помощью JSONDecoder.
Зачем нужны явные CodingKeys?
Они сопоставляют имена свойств Swift в camelCase с точными ключами JSON. Оставляйте их включёнными, когда ключи в snake_case или имеют названия, не являющиеся корректными идентификаторами Swift.
Можно ли сгенерировать классы вместо структур?
Да. Переключите Types на class, если нужна семантика ссылок, например для Core Data или совместимости с Objective-C.
Загружается ли мой JSON?
Нет. Вся конвертация выполняется в вашем браузере; на сервер ничего не отправляется.
Реклама