JSON в классы Java (POJO или Record)
Создавайте POJO Java с геттерами и сеттерами или записи Java 16 по JSON, с Jackson @JsonProperty для необычных ключей и вложенными статическими классами. Бесплатно.
Вложенные типы — статические вложенные классы. Ключи, не являющиеся допустимыми именами Java, получают @JsonProperty (Jackson).
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Похожие Инструменты
Просмотреть ВсеЧто такое JSON в класс Java?
Создаёт классы моделей Java по образцу JSON — либо классические POJO с приватными полями, геттерами и сеттерами, либо компактные записи Java (records). Вложенные объекты становятся статическими вложенными классами (или вложенными записями) внутри корневого типа.
Как пользоваться JSON в класс Java
- Вставьте образец JSON в поле Входной JSON (либо нажмите Загрузить пример или Открыть файл).
- Задайте Имя корневого типа (по умолчанию
Root). - Выберите Стиль вывода: Класс с геттерами и сеттерами (Jackson) или Запись Record (Java 16+).
- Скопируйте сгенерированный код Java или нажмите Скачать, чтобы сохранить его в файл.
Пример
{"id":1,"name":"A","tags":["x"]} import java.util.List;
public class Root {
private long id;
private String name;
private List<String> tags;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public List<String> getTags() { return tags; }
public void setTags(List<String> tags) { this.tags = tags; }
} Когда использовать JSON в класс Java
Используйте для заготовок DTO в коде на Spring, Jackson или Gson. Типы вроде дат (LocalDate, Instant) и перечислений поправьте вручную, а вложенные классы вынесите в отдельные файлы, если так принято в вашей кодовой базе.
Как работает JSON в класс Java
Образец обходится рекурсивно, и каждая позиция собирает встреченные в ней типы. Массивы объектов объединяются в один тип: ключ, отсутствующий у части элементов, становится необязательным, ключ, который где-то равен null, получает допустимое значение null, целые числа вперемешку с дробными становятся типом с плавающей точкой, а всё остальное со смешанными типами сводится к динамическому типу. Вложенные объекты становятся собственными именованными типами (PascalCase от ключа, ключи-массивы переводятся в единственное число: orders → Order), а при совпадении имён добавляются числовые суффиксы. В Java для обязательных значений используются примитивы long/double/boolean, для допускающих null или необязательных — обёртки Long/Double/Boolean, а также String, List<T> для массивов и Object для динамических значений. Имена полей — в camelCase; если они отличаются от ключа JSON, добавляется аннотация Jackson @JsonProperty("key"), а импорт подключается автоматически.
Распространенные Случаи Использования
- Создание DTO для REST-клиента на Spring Boot
- Описание сообщения JSON для потребителей Kafka
- Генерация records для неизменяемой конфигурации
- Быстрый старт тестовых данных на Java
Часто Задаваемые Вопросы
Нужен ли Jackson?
Только если некоторые ключи не являются допустимыми именами Java; тогда используется @JsonProperty. В остальных случаях классы — обычный Java и работают и с Gson.
Почему long, а не int?
Числа JSON могут выходить за диапазон int (идентификаторы, метки времени). long избегает переполнения; перейдите на int, если знаете, что значения малы.
Работают ли records с Jackson?
Да, Jackson 2.12+ десериализует records Java через их канонический конструктор.