JSON в классы Java (POJO или Record)

Создавайте POJO Java с геттерами и сеттерами или записи Java 16 по JSON, с Jackson @JsonProperty для необычных ключей и вложенными статическими классами. Бесплатно.

Вложенные типы — статические вложенные классы. Ключи, не являющиеся допустимыми именами Java, получают @JsonProperty (Jackson).

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

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

Просмотреть Все

Что такое JSON в класс Java?

Создаёт классы моделей Java по образцу JSON — либо классические POJO с приватными полями, геттерами и сеттерами, либо компактные записи Java (records). Вложенные объекты становятся статическими вложенными классами (или вложенными записями) внутри корневого типа.

Как пользоваться JSON в класс Java

  1. Вставьте образец JSON в поле Входной JSON (либо нажмите Загрузить пример или Открыть файл).
  2. Задайте Имя корневого типа (по умолчанию Root).
  3. Выберите Стиль вывода: Класс с геттерами и сеттерами (Jackson) или Запись Record (Java 16+).
  4. Скопируйте сгенерированный код 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 через их канонический конструктор.

Другие категории