Генерация типов

JSON в Javaмодели по примерам ответа API

Для массива создаётся модель элемента. Весь ответ следует читать как List<Root>.

JSON в Java

Входной JSON

Разбор и генерация выполняются в браузере. Данные не отправляются и не сохраняются.

Исходный код

Параметры генерации

Jackson 2.x; для Kotlin нужен его модуль. Вывод типов не проверяет данные. Настройки декодера описаны ниже.

Входной массив: файл определяет модель элемента. Читайте List<Root>.

Классов: 2 · nullable-полей: 2

JSON в Java помогает начать работу, когда есть ответ API, но нет определения модели. Несколько объектов в массиве показывают поля, отсутствующие в первой записи, и значения null.

Этот генератор POJO создаёт черновик. Примеры не доказывают обязательность полей и не описывают все значения, которые интерфейс может вернуть в будущем.

Зачем преобразовывать JSON в Java

Учитываются все записи

JSON в Java объединяет поля всех объектов в одной позиции массива. Поле, появившееся позже, не исчезает из модели; отсутствие или null расширяет выведенный тип.

Две карточки с разными полями сходятся в одну модель; пустой маркер обозначает отсутствующее поле.

Исходные ключи сохраняют связь с полями

Ключи с символами и зарезервированными словами получают допустимые имена. Аннотации Jackson связывают их с исходным написанием. При совпадении имён добавляются устойчивые числовые суффиксы.

Необычные ключи соединены цветными линиями с допустимыми свойствами и вложенным классом.

Проверьте примеры и настройки

01

Подберите разные примеры

Корень должен быть объектом или непустым массивом только из объектов. Массив задаёт общую модель элемента, а не вымышленное поле-обёртку. Внутренние массивы анализируются рекурсивно.

02

Выберите политику null

Режим наблюдений расширяет отсутствующие поля и поля с null. Общий режим использует обёртки Java и свойства Kotlin с ? и значением null по умолчанию. Без вложенности вспомогательные классы располагаются на верхнем уровне того же файла.

03

Сохраните актуальный результат

Автоматический режим ждёт 350 мс. После отключения используйте кнопку генерации или Ctrl/Cmd+Enter. Любое изменение блокирует экспорт. Очистку и загрузку примера можно один раз отменить вместе с настройками и результатом.

Поля, типы и классы

Точные числовые типы

Обычные целые числа в знаковом 64-битном диапазоне становятся long/Long, более крупные — BigInteger. Десятичная и экспоненциальная запись, включая 1.0 и 1e3, даёт BigDecimal. Преобразования через JavaScript Number нет.

Параметры Kotlin

Здесь можно переключить классы Java на data class Kotlin. Отсутствующее поле или null приводит к T? = null; у остальных свойств нет значения по умолчанию. Пустой корневой объект даёт обычный class без параметров.

Имена и цели аннотаций

Имена приводятся к ASCII camelCase, конфликты разрешаются суффиксами. JsonProperty ставится на поля Java, параметры и getter Kotlin. Полные имена типов предотвращают конфликты с корневым именем String или List.

Один исходный файл

По умолчанию Java использует открытые поля и вложенные static-классы, Kotlin — вложенные классы данных. Без вложенности вспомогательные классы Java не объявляются public. Всё остаётся в одном скачиваемом файле.

Совместимость и ограничения

Нужна настройка Jackson
Аннотации рассчитаны на Jackson 2.x. Kotlin также требует jackson-module-kotlin и kotlin-reflect. Для проверки null настройте FAIL_ON_NULL_FOR_PRIMITIVES и StrictNullChecks. Ссылочные типы Java всё ещё допускают null; модель не заменяет валидатор.
Широкие типы и точность
Смешанные значения и поля только с null дают Object/Any, пустые внутренние объекты — Map. Пустой массив не определяет тип элемента. Для динамических позиций включите USE_BIG_INTEGER_FOR_INTS и USE_BIG_DECIMAL_FOR_FLOATS. Для сериализации пустого корневого класса отключите FAIL_ON_EMPTY_BEANS.
Не все ключи можно отобразить
Пустое имя JsonProperty означает имя по умолчанию, поэтому настоящий пустой ключ JSON отклоняется. При выключенных аннотациях необходимость переименования также вызывает ошибку. Для таких данных нужна Map или собственный декодер.
Примеры не являются схемой
Нет обработки JSON Schema, OpenAPI, Lombok, record, Gson, распознавания дат и enum. Строки остаются строками. Корневые скаляры, пустые и смешанные массивы отклоняются. Отсутствие и явный null не отслеживаются как разные состояния.
Ограниченный объём
Только строгий JSON: без комментариев, повторных ключей, исправления, URL и импорта файлов. Пределы: 500 000 входных символов, 50 000 узлов, глубина 40, 100 полей на объект, 200 классов, по 1 000 символов на ключ/числовой токен, модуль экспоненты 10 000 и 1 000 000 выходных символов.

Вопросы о JSON в Java

Подходит ли код для Spring Boot?

JSON в Java создаёт модели для Jackson 2.x. Добавьте пакет и зависимости в своём проекте, проверьте модуль Kotlin и правила null. Конфигурация для каждой версии Spring Boot не генерируется.

Обрабатываются ли массивы объектов?

Да, если массив непустой и содержит только объекты. В выводе учитываются все примеры. Для чтения всего ответа используйте List<Root>: файл описывает класс одного элемента.

Остаются ли данные в браузере?

Разбор и генерация выполняются в текущем браузере. Входные данные не отправляются и не сохраняются. Чтения URL и ссылок для публикации примеров здесь нет.

Как выбираются числовые типы?

Обычные целые числа дают long/Long или BigInteger в зависимости от диапазона. Десятичные и экспоненциальные токены дают BigDecimal. Для чисел в Object/Any дополнительно нужны указанные выше настройки Jackson.

Почему поле получило тип Object?

В примерах встретились несовместимые типы либо только null. Широкий тип отражает недостаток данных. Добавьте характерные значения или уточните тип вручную после проверки контракта API.

Есть случай для улучшения вывода типов?

Проверьте модель в проекте

Используйте JSON в Java для нескольких реальных ответов, проверьте nullable-поля и настройки Jackson, затем скомпилируйте экспортированный файл в своём проекте.