Перейти к содержанию

JSON в Java класс

Преобразуйте JSON образец в Java классы с автоматическим выводом вложенных типов и обобщённых списков.

Входные данные
Выходные данные

JSON в Java класс

Вставьте JSON образец и этот инструмент генерирует Java классы, необходимые для его представления, выводя типы полей, типы вложенных объектов и типы элементов обобщённых списков прямо из предоставленных значений. Он предназначен для backend разработчиков, которые получают ответ API или файл конфигурации и нуждаются в типизированной модели для десериализации без необходимости вручную писать каждое поле.

Выберите способ аннотирования полей: отсутствие, Jackson's @JsonProperty или Gson's @SerializedName, каждый из которых сохраняет исходный ключ JSON таким образом, чтобы сериализация по-прежнему соответствовала после переименования поля в camelCase. Отключите геттеры и сеттеры для простого класса с открытыми полями или замените их Lombok's @Data или Java record, где компоненты занимают место полей и методов доступа. Типы-обёртки (Integer, Boolean, Double) можно везде использовать вместо примитивов; инструмент всегда использует обёртку где значение действительно опционально, поскольку примитив никогда не может содержать null. Объявление пакета добавляется при необходимости, а вложенные объекты отображаются как статические вложенные классы в одном файле или как отдельные классы верхнего уровня.

Когда одна и та же структура появляется более одного раза — повторяющиеся объекты в массиве или два соседних поля с идентичной структурой — инструмент повторно использует один сгенерированный класс вместо его дублирования. Поля, наблюдаемые с разными структурами по всему массиву, объединяются в один класс, поля отсутствующие в некоторых элементах отмечаются как опциональные. Числа остаются как int где они подходят в 32-битный диапазон и расширяются до long или double по мере необходимости; ключ JSON который не может быть идентификатором Java, например эмодзи, возвращается к безопасному сгенерированному имени.

Всё работает локально в вашем браузере — образец JSON никогда не загружается и не передаётся на сервер. Скопируйте сгенерированные классы в свой проект, загрузите их как файл .txt или отправьте вывод обратно на вход для запуска другого инструмента над ним.

FAQ

Обрабатывает ли он вложенные объекты и массивы?
Да. Вложенные объекты становятся своим собственным классом (вложенным или отдельным в зависимости от опции расположения класса) и массивы становятся обобщённым java.util.List типа элемента.
Что происходит с полем, которого не хватает в некоторых образцах объектов?
Оно отмечается как опциональное и если это примитив, то переводится на его тип-обёртку (Integer, Boolean, Double) так поле может законно быть null.
Могу ли я использовать Lombok или Java record вместо вручную написанных геттеров и сеттеров?
Да. Включите Lombok @Data для класса аннотированного @Data и приватными полями или используйте Java record для генерирования record с полями как компонентами — оба заменяют вручную написанные методы доступа.
Как выбираются имена полей когда ключ JSON не является валидным идентификатором Java?
Ключ преобразуется в camelCase; ключ который производит пустое или совпадающее с ключевым словом имя возвращается к безопасному сгенерированному имени такому как field или ключевое слово с завершающим подчёркиванием.
Мой JSON загружается куда-нибудь?
Нет. Генерирование класса работает полностью в вашем браузере — ваш JSON образец никогда не отправляется на сервер.