Инструмент Tool Kumar
JSON в Java
Конвертируйте пример ответа API в record-классы Java для Jackson. Корневой тип — один публичный record-класс с вложенными record-классами, поэтому весь код можно сохранить в Root.java.
Как пользоваться инструментом
- Вставьте типичный ответ, включая записи с разным набором полей.
- Проверьте сгенерированный код и при необходимости измените имя корня.
- Скопируйте или скачайте код, затем сверьте типы с контрактом вашего 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.