Skip to main content
CheckTown
Конвертеры

Как конвертировать JSON в Java-классы

Опубликовано 5 мин чтения
В этой статье

Зачем генерировать Java-классы из JSON

Многословный синтаксис классов Java делает написание POJO для десериализации JSON одной из самых утомительных задач в бэкенд-разработке. Один ответ API с вложенными объектами может потребовать десятки строк геттеров, сеттеров и конструкторов. Наш конвертер JSON в Java устраняет этот шаблонный код, анализируя структуры JSON и мгновенно генерируя готовые к продакшну Java-классы.

Создаёте ли вы REST API клиенты, обрабатываете webhook-нагрузки или интегрируете сторонние сервисы, генерация Java-классов из образцов JSON-данных гарантирует, что ваши модели соответствуют фактической структуре данных. Это уменьшает ошибки из-за неправильных имён полей, неверных типов и отсутствующих вложенных классов, которые часто возникают при ручном написании моделей.

Режимы вывода

Конвертер поддерживает несколько стилей Java-классов в соответствии с требованиями вашего проекта и версией Java.

  • POJO — традиционный Plain Old Java Object с приватными полями, геттерами, сеттерами и конструктором без аргументов, совместимый со всеми версиями Java и фреймворками сериализации
  • Lombok @Data — аннотированные классы, использующие аннотацию @Data от Lombok для автоматической генерации геттеров, сеттеров, equals, hashCode и toString, значительно сокращая объём кода
  • Java Records — record-классы Java 14+, предоставляющие неизменяемые носители данных с автоматическими методами доступа, конструктором, equals, hashCode и toString в одной строке объявления

Попробуйте бесплатно — без регистрации

Конвертировать JSON в Java →

Опции аннотаций

Конвертер генерирует аннотации для популярных Java JSON-библиотек для обеспечения правильного отображения полей.

  • Jackson @JsonProperty — добавляет аннотации @JsonProperty с оригинальным именем ключа JSON, обеспечивая правильную десериализацию даже когда имена полей Java отличаются от ключей JSON
  • Пользовательское именование — когда JSON использует ключи snake_case или kebab-case, конвертер генерирует имена полей Java в camelCase с отображением @JsonProperty на оригинальный формат ключа
  • Вложенные классы — генерирует правильно структурированные внутренние классы или отдельные классы верхнего уровня для вложенных объектов JSON, с соответствующими операторами импорта и ссылками типов

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

List или ArrayList в сгенерированном коде?

Конвертер генерирует типы полей с использованием интерфейса List, а не реализации ArrayList. Это соответствует лучшим практикам Java — программирование на интерфейсы, а не на реализации. Вы можете инициализировать поля с помощью ArrayList, LinkedList или любой другой реализации List в ваших конструкторах.

Как конвертер выбирает между примитивными и обёрточными типами?

По умолчанию конвертер использует обёрточные типы (Integer, Double, Boolean) вместо примитивных (int, double, boolean). Обёрточные типы могут представлять значения null из JSON, что важно для необязательных полей. Использование примитивов для nullable JSON-полей молча конвертировало бы null в 0 или false, скрывая проблемы с данными.

Можно ли генерировать классы, совместимые с Gson вместо Jackson?

Сгенерированный вывод POJO работает как с Jackson, так и с Gson без модификаций. Если вам нужны специфические аннотации Gson, такие как @SerializedName, вы можете легко заменить @JsonProperty на @SerializedName — паттерн отображения полей идентичен. Сгенерированные имена полей следуют конвенциям Java независимо от библиотеки сериализации.

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