Инструмент Tool Kumar

JSON в Java

Конвертируйте пример ответа API в record-классы Java для Jackson. Корневой тип — один публичный record-класс с вложенными record-классами, поэтому весь код можно сохранить в Root.java.

Как пользоваться инструментом

  1. Вставьте типичный ответ, включая записи с разным набором полей.
  2. Проверьте сгенерированный код и при необходимости измените имя корня.
  3. Скопируйте или скачайте код, затем сверьте типы с контрактом вашего API.

Пример с разбором

Этот результат создан встроенным конвертером. По двум ценам товаров выводится тип поля с плавающей точкой. Значения null и строка в поле note дают тип, допускающий null.

Ввод

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

Результат

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public record Root(
    @JsonProperty("user-id") long userId,
    Profile profile,
    List<Item> items
) {
    public record Profile(String city, @JsonProperty("created_at") String createdAt) {}

    public record Item(double price, String note) {}
}

Использование record-класса с Jackson

Сохраните результат по умолчанию как Root.java. Jackson создаёт компоненты record-класса из свойств JSON. Вложенный record-класс, например Item, доступен как Root.Item.

В коде нет объявления package. Добавьте пакет, который использует ваше приложение. Если вы замените даты типами java.time, зарегистрируйте привычные модули Jackson.

import com.fasterxml.jackson.databind.ObjectMapper;

Root model = new ObjectMapper().readValue(responseBody, Root.class);

Параметры и особые случаи

  • Генерируются record-классы, а не изменяемые POJO с сеттерами. Нужны Java 16 или новее и версия Jackson с поддержкой record-классов, например 2.12 или новее.
  • Компоненты record-класса с изменёнными именами или именами, совпадающими с зарезервированными словами, получают @JsonProperty с исходным ключом. Вложенные массивы объектов становятся List<Item>.
  • Целые числа получают тип long, большие целые за пределами 64-битного диапазона со знаком — BigInteger, дробные — double. Для nullable-примитивов используются классы-обёртки, например Long.
  • Поля, содержащие только null или значения разных типов, получают тип Object. Даты остаются String. Если важна точная десятичная арифметика, используйте BigDecimal и проверьте сопоставление полей.

Конфиденциальность по умолчанию

Документ остаётся в этом браузере. Tool Kumar разбирает и конвертирует данные, создаёт файлы для скачивания на вашем устройстве, без регистрации и отправки на сервер.

Вопросы об инструменте «JSON в Java»

Генерирует ли конвертер JSON в Java классы POJO?
Он генерирует неизменяемые record-классы Java. Если вам нужны POJO для Java 8, сеттеры или конструктор без аргументов, доработайте результат или используйте генератор для такого стиля моделей.
На какую JSON-библиотеку он рассчитан?
На Jackson. Конвертер импортирует @JsonProperty, когда нужно сохранить ключ, отличающийся от имени компонента record-класса Java.
Можно ли сохранить все вложенные типы в одном файле?
Да. Публичный корневой record-класс содержит вложенные публичные record-классы, поэтому результат по умолчанию для объекта помещается в Root.java.
Как десериализовать record-класс?
Используйте ObjectMapper.readValue(responseBody, Root.class) с поддержкой record-классов в Jackson. Проверьте обработку дат и числовые ограничения вашего API.

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

JSON в Kotlin: data-классы, JSON в классы C# и Генератор JSON Schema.