Что это
JSONExport - это самая популярная бесплатная Mac-утилита для генерации model-классов из JSON. Программа поддерживает множество языков (Swift, Objective-C, Java, Kotlin, TypeScript, Dart, Go, Rust) и десятки фреймворков (Codable, ObjectMapper, GSON, Jackson, Mantle и других). На GitHub - 4800+ звёзд, разрабатывается с 2014 года автором Ahmed Ali.
Если вы делаете кросс-платформенное приложение - REST API возвращает один JSON, но клиенты на iOS, Android и web требуют разных моделей. JSONExport - один из немногих инструментов, который генерирует все варианты в одной программе. Открыли JSON, выбрали Swift Codable - получили код для iOS. Переключили на Java GSON - получили код для Android. Переключили на TypeScript - получили интерфейсы для web.
Программа native macOS, написана на Swift. Размер дистрибутива небольшой, расход памяти минимальный. Распространяется как исходный код на GitHub без готового DMG - для использования нужен Xcode (что у целевой аудитории - iOS-разработчиков - всегда есть).
Global community признала JSONExport стандартом: 4800+ звёзд показывают что инструмент проверен временем. Активно поддерживается, регулярные обновления для новых версий Swift и iOS. Лицензия указана как NOASSERTION - юридически непрозрачно для коммерческого использования, но в практике используется свободно сотнями тысяч разработчиков.
Кому подойдёт
В первую очередь - iOS/macOS-разработчикам. Всегда есть надобность типизировать JSON-ответ от API в Swift-модель. JSONExport делает это в один клик с поддержкой Codable (рекомендуется) или ObjectMapper (для legacy-проектов).
Во вторую - разработчикам кросс-платформенных приложений. Если ваше приложение на iOS использует Codable, на Android - GSON или Moshi, на backend - Jackson, и все они потребляют один JSON от API - JSONExport генерирует все три варианта моделей за минуту. Не нужно переключаться между разными инструментами для каждой платформы.
В третью - Android-разработчикам, делающим Java или Kotlin приложения. Поддерживается генерация GSON-моделей (стандарт для Java) и Kotlin data classes. Удобно когда основной язык разработки - Kotlin, но иногда нужно работать со старым Java-кодом.
В четвёртую - веб-разработчикам, использующим TypeScript. Генерация TypeScript interfaces из JSON-ответов API упрощает type-safe интеграцию с backend.
В пятую - студентам и преподавателям, изучающим разработку под несколько платформ. JSONExport даёт практическую песочницу для экспериментов с разными языками: видишь как один и тот же JSON выглядит в коде на Swift, Java, TypeScript - помогает понять различия и общее.
Ключевые возможности
Поддержка множества языков
JSONExport поддерживает большинство языков, на которых пишут современные приложения:
- Swift - Codable (рекомендуется Apple), ObjectMapper, EVReflection, SwiftyJSON
- Objective-C - Mantle, JSONModel, KZPropertyMapper, MJExtension (для legacy iOS)
- Java - GSON (Google), Jackson, Moshi (Square)
- Kotlin - data classes
- TypeScript - interfaces
- SQLite Schema - для локального хранения данных
- YAML / Plist - конфигурационные форматы
- Dart, Go, Rust - через расширения
По переключению целевого языка вы видите как изменяется сгенерированный код - удобно для обучения и сравнения.
Автоопределение типов
Программа анализирует JSON и автоматически определяет правильные типы для каждого поля:
- Числа без точки - Int
- Числа с точкой - Double
- Строки - String
- Boolean (true/false) - Bool
- Массивы - [Type] или List
- Вложенные объекты - отдельные классы
- null - делает поле Optional
Codable conformance автоматически (Swift)
Для Swift сгенерированный код по умолчанию conformant к Codable - можно сразу использовать с JSONEncoder и JSONDecoder без дополнительной работы.
Snake_case ↔ camelCase mapping
Для языков где конвенция именования отличается от JSON, добавляется правильный mapping. В Swift это CodingKeys enum, в Java - аннотации @SerializedName, в Kotlin - @Json или @SerialName.
Кастомизация имён классов
Можно настроить:
- Имя главного класса (по умолчанию из JSON-ключа или имени файла)
- Префикс/суффикс для всех классов (например, MyAppUser вместо User)
- Суффикс для вложенных классов (UserProfile вместо просто Profile)
Сохранение в файлы
Кнопка Save сохраняет сгенерированные классы как файлы в выбранной папке. Для языков с раздельными .h/.m (Objective-C) - создаются оба файла. Для Java - один .java файл на класс.
Drag-and-drop
Перетащите .json файл из Finder в окно программы вместо ручного копирования текста. Также можно перетащить из браузера вкладку с JSON-ответом.
История
Программа помнит последние использованные JSON и настройки - можно вернуться к предыдущей задаче без повторного ввода.
Плюсы и минусы
Плюсы:
- Самый популярный инструмент в нише - 4800+ звёзд, проверен временем.
- Активная разработка с 2014 года.
- Поддержка 8+ языков и десятков фреймворков в одной программе.
- Native Swift приложение - быстрая работа.
- Бесплатно, open source.
- Умеет CodingKeys для Swift, аннотации для Java/Kotlin.
- Сохранение классов в файлы прямо из программы.
- Локальная работа без отправки JSON в облако.
Минусы:
- Нет готового DMG - нужно собрать через Xcode.
- Лицензия не указана явно (NOASSERTION) - юридически непрозрачно.
- Не поддерживает специфические фреймворки нового поколения (например, kotlinx.serialization для Kotlin).
- Иногда генерирует не идеальный код - ручная правка может потребоваться (например, для зарезервированных слов в именах полей).
- Нет CLI-режима для интеграции в скрипты или CI.
- Один раз в год могут возникать проблемы совместимости с новыми Xcode/Swift - решается обновлением проекта от автора.
Как установить и использовать
Скачайте JSONExport со страницы программы на mac-soft.ru. Программа распространяется как исходный код на GitHub.
Пошаговая инструкция:
- Установите Xcode из Mac App Store (если не установлен)
- Склонируйте репозиторий:
git clone https://github.com/Ahmed-Ali/JSONExport.git - Откройте
JSONExport/JSONExport.xcodeprojв Xcode - Если Xcode попросит обновить настройки проекта - согласитесь
- Нажмите Cmd+R для сборки и запуска
При первой сборке Xcode может пожаловаться на отсутствие подписи или предупреждения compatibility. Обычно достаточно настроить Signing & Capabilities в Project Settings (выбрать ваш Team или None для local-сборки).
Использование:
- Запустите JSONExport.app
- Скопируйте JSON в окно программы
- Выберите целевой язык (Swift) и фреймворк (Codable)
- Введите имя главного класса (например, User)
- Получите готовый Swift-код в правой панели
- Скопируйте код в свой Xcode-проект или сохраните в файлы (Save As)
Для переключения языка - просто выберите другой в выпадающем списке. Тот же JSON автоматически перегенерируется в новый язык.
Альтернативы
Если JSONExport не подходит - есть варианты:
- j2s (zadr/j2s) - проще, только Swift Codable, активная разработка.
- JSONConverter (vvkeep/JSONConverter) - 950+ stars, более современный UI, поддерживает много frameworks.
- SwiftyJSONAccelerator (insanoid/SwiftyJSONAccelerator) - 940+ stars, специализирован на Swift 5 и Codable.
- quicktype.io (онлайн) - универсальный сервис в браузере. Поддерживает много языков. Минус - JSON отправляется на их серверы.
- CLI: ijoshsmith/json2swift - command-line вариант для интеграции в скрипты.
JSONExport остаётся золотым стандартом для большинства случаев: универсальный, проверенный, native, локальный, бесплатный.
Итог
JSONExport - инструмент который должен быть установлен на Mac каждого iOS/Android/web-разработчика. Один раз потратили 30 минут на компиляцию через Xcode, потом годами пользуетесь без проблем.
4800+ звёзд на GitHub и 12 лет разработки гарантируют что инструмент работает надёжно с любыми JSON-входными данными. Поддержка множества языков делает его универсальным: один инструмент для всех платформ.
Для кросс-платформенных команд JSONExport незаменим - синхронизация моделей между iOS и Android приложениями становится тривиальной.
Скачать JSONExport для macOS можно на mac-soft.ru. Программа бесплатная, open source, требует Xcode для сборки.
Комментарии (0)