Обзоры

j2s - конвертер JSON в Swift-структуры на Mac

j2s - конвертер JSON в Swift-структуры на Mac

Что это

j2s - это бесплатная нативная утилита для macOS, которая решает рутинную задачу iOS/macOS-разработчиков: превращает JSON-объекты в Swift-структуры с поддержкой Codable. Получили ответ от REST API в виде JSON - вставили в j2s - получили готовый код Swift-модели. Сэкономили 10-30 минут ручной типизации полей.

Программа написана на Swift нативно, разработка идёт с 2017 года, последнее обновление - январь 2026. 230+ звёзд на GitHub. Простой минималистичный интерфейс: окно с двумя областями - входной JSON слева, сгенерированный Swift-код справа.

Важный момент: j2s распространяется как исходный код на GitHub без готового DMG. Чтобы использовать программу, нужно склонировать репозиторий и собрать .app в Xcode (Cmd+R в проекте, потом извлечь собранный .app из DerivedData). Это не проблема для iOS-разработчиков - целевой аудитории - потому что Xcode и так установлен.

Уникальное преимущество j2s перед онлайн-сервисами типа quicktype.io - всё работает локально. Если у вас приватный API с секретными данными, JSON не попадает на чужие серверы. Особенно важно для финтеха, медтеха, банковской разработки.

Кому подойдёт

В первую очередь - iOS/macOS-разработчикам, работающим с REST API на Swift. Каждый раз когда вы интегрируете новый endpoint, нужно описать модель ответа в Swift-коде. j2s делает это в один клик вместо 15-минутной ручной работы.

Во вторую - разработчикам командной работы с backend-ом. Когда backend-инженер пришёл с примером JSON-ответа на новый endpoint - сразу прогнать через j2s, добавить полученный struct в проект, использовать в коде через несколько секунд. Никаких ошибок при ручном переписывании.

В третью - студентам, изучающим Swift и URLSession. Понимать что такое Codable - один из ключевых навыков современного iOS-разработчика. j2s даёт песочницу для экспериментов: меняешь JSON, видишь как меняется генерируемый код.

В четвёртую - разработчикам, мигрирующим с Objective-C на Swift. Старые приложения часто используют ручной парсинг JSON через NSDictionary. j2s даёт быстрый способ переписать модели на современный Swift Codable.

В пятую - freelancer-разработчикам, работающим на нескольких проектах. Чем меньше времени на boilerplate-код, тем больше остаётся на интересные задачи.

Ключевые возможности

Парсинг любого JSON

Вставляете JSON в окно программы - j2s автоматически парсит его и определяет типы полей. Поддерживает все стандартные JSON-типы: String, Number (Int/Double), Boolean, Array, Object, null.

Codable conformance автоматически

Генерируемые struct автоматически conformant к Codable - значит можно использовать их напрямую с JSONEncoder и JSONDecoder. Никакого ручного описания init(from:) и encode(to:).

Snake_case ↔ camelCase mapping

REST API обычно использует snakecase в именах полей (username, createdat, emailverified). Swift-конвенция требует camelCase (userName, createdAt, emailVerified). j2s автоматически добавляет CodingKeys enum в struct, который описывает соответствие:

struct User: Codable {
    let userName: String
    let createdAt: String
    let emailVerified: Bool
    
    enum CodingKeys: String, CodingKey {
        case userName = "user_name"
        case createdAt = "created_at"
        case emailVerified = "email_verified"
    }
}

Optional поля для nil значений

Если в JSON значение null или поле может отсутствовать в ответе - j2s делает Optional. Это критично для безопасной декодиации: без Optional декодер выдаст ошибку при отсутствии поля.

Вложенные структуры

Nested JSON-объекты превращаются во вложенные Swift-структуры с правильными именами:

{
  "user": {
    "profile": {
      "avatar_url": "https://..."
    }
  }
}

Порождает:

struct Response: Codable {
    let user: User
}
struct User: Codable {
    let profile: Profile
}
struct Profile: Codable {
    let avatarUrl: String
    enum CodingKeys: String, CodingKey {
        case avatarUrl = "avatar_url"
    }
}

Массивы

Arrays JSON-объектов автоматически становятся [Type] в Swift. Если в массиве разнородные данные - j2s корректно обрабатывает.

Локальная работа, приватность

В отличие от онлайн-сервисов типа quicktype.io, j2s работает на вашем Mac. JSON не отправляется ни на какие серверы. Можно использовать с приватными API без рисков утечки данных.

Плюсы и минусы

Плюсы:

  • Полностью бесплатно, open source.
  • Native Swift - быстрая работа.
  • Активно развивается с 2017 года.
  • Локальная работа без отправки данных в облако.
  • Автоматический CodingKeys mapping snake_case → camelCase.
  • Поддержка Optional, вложенных структур, массивов.
  • Не требует подключения к интернету.

Минусы:

  • Нет готового DMG - нужно собрать самостоятельно через Xcode.
  • Лицензия не указана явно (NOASSERTION) - юридически непрозрачно для коммерческого использования.
  • Не поддерживает другие языки (только Swift).
  • Нет CLI-режима для интеграции в скрипты.
  • Не поддерживает разные мepping-фреймворки (только Codable).
  • Нет валидации сгенерированного кода - если в JSON есть проблемы (например, поле "class" - зарезервированное слово в Swift), нужно править руками.

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

Скачайте j2s со страницы программы на mac-soft.ru. Ссылка ведёт на GitHub-репозиторий с исходниками.

Поскольку готового DMG нет, нужно собрать программу самостоятельно. Это требует Xcode (бесплатно из Mac App Store).

Пошаговая инструкция:

  1. Установите Xcode из Mac App Store (если ещё не установлен)
  2. Склонируйте репозиторий: git clone https://github.com/zadr/j2s.git
  3. Откройте j2s/j2s.xcodeproj в Xcode
  4. Нажмите Cmd+R для сборки и запуска
  5. j2s.app откроется автоматически

Для постоянного использования можно скопировать собранный .app в Applications:

  1. В Xcode откройте Window → Organizer → Archive (если нужна релизная сборка)
  2. Или просто найдите собранный .app в DerivedData: ~/Library/Developer/Xcode/DerivedData/j2s-*/Build/Products/Debug/j2s.app
  3. Скопируйте в /Applications

Использование:

  1. Запустите j2s
  2. Скопируйте JSON из API-документации или ответа REST-запроса
  3. Вставьте в левую панель программы
  4. Программа автоматически сгенерирует Swift-код в правой панели
  5. Скопируйте код в свой Xcode-проект

Для чувствительных к качеству проектов - проверьте сгенерированный код. j2s обычно работает корректно, но иногда нужны мелкие правки (например, переименование полей с зарезервированными именами).

Альтернативы

Если j2s не подходит - есть варианты:

  • quicktype.io (онлайн) - самый популярный JSON to Code сервис. Поддерживает много языков, но требует загрузки JSON в облако (не подходит для приватных данных).
  • JSONExport (Ahmed-Ali/JSONExport) - другая бесплатная Mac-утилита, поддерживает много языков и frameworks. Тоже source-only.
  • json-mapper (AppCraft-LLC) - похожий инструмент для генерации Swift ObjectMapper моделей.
  • JSONConverter (vvkeep/JSONConverter) - 950+ stars, более продвинутый аналог.
  • SwiftyJSONAccelerator (insanoid/SwiftyJSONAccelerator) - 940+ stars, поддерживает Swift 5 и Codable.
  • CLI: ijoshsmith/json2swift - command-line вариант для интеграции в скрипты.

Если нужна простота и локальная работа - j2s выбор. Для большего количества опций - JSONConverter или JSONExport.

Итог

j2s - простой, быстрый, локальный инструмент для iOS/macOS-разработчиков, регулярно работающих с REST API. Не самый популярный в нише (есть JSONExport с 4800 звёздами), но отличается простотой и фокусом на одной задаче - JSON в Swift Codable.

Главный недостаток - source-only распространение требует одного раза собрать через Xcode. Но это десять минут работы, а пользоваться программой можно годами.

Для разработчиков с приватными API и серьёзными требованиями к security - j2s выгоден тем что работает оффлайн, без отправки JSON в облако. Никаких рисков утечки токенов или sensitive-данных.

Скачать j2s для macOS можно на mac-soft.ru. Программа бесплатная, open source, требует Xcode для сборки.

Комментарии (0)

Пока нет комментариев.

Программы упомянутые в статье