Обзоры

JSONExport - универсальный конвертер JSON в model-классы для разных языков

JSONExport - универсальный конвертер JSON в model-классы для разных языков

Что это

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)
- Суффикс для вложенных классов (User
Profile вместо просто 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.

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

  1. Установите Xcode из Mac App Store (если не установлен)
  2. Склонируйте репозиторий: git clone https://github.com/Ahmed-Ali/JSONExport.git
  3. Откройте JSONExport/JSONExport.xcodeproj в Xcode
  4. Если Xcode попросит обновить настройки проекта - согласитесь
  5. Нажмите Cmd+R для сборки и запуска

При первой сборке Xcode может пожаловаться на отсутствие подписи или предупреждения compatibility. Обычно достаточно настроить Signing & Capabilities в Project Settings (выбрать ваш Team или None для local-сборки).

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

  1. Запустите JSONExport.app
  2. Скопируйте JSON в окно программы
  3. Выберите целевой язык (Swift) и фреймворк (Codable)
  4. Введите имя главного класса (например, User)
  5. Получите готовый Swift-код в правой панели
  6. Скопируйте код в свой 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)

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

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