Преобразователь JSON в классы Java — Numio
Генерирует классы Java из JSON: страница запускает json_typegen (WebAssembly) в режиме Kotlin и переписывает каждый data class в класс Java с приватными полями, конструктором со всеми аргументами, геттерами и сеттерами.
Создать POJO для десериализации ответа REST с помощью Jackson.
Когда пригодится
- Создать POJO для десериализации ответа REST с помощью Jackson.
- Набросать DTO-классы для контроллера Spring по примеру payload.
Как пользоваться
- Вставьте JSON-объект или массив в левый редактор.
- Изучите классы: корневой называется Root, а вложенные объекты становятся отдельными классами, названными по своему ключу.
- Скопируйте их в отдельные файлы .java (импорты List и Jackson уже включены) и при необходимости поправьте типы.
JSON
{
"id": 42,
"user_name": "ada",
"active": true,
"tags": ["admin", "editor"]
}Классы Java
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Root {
private Long id;
@JsonProperty("user_name")
private String userName;
private Boolean active;
private List<String> tags;
public Root(Long id, String userName, Boolean active, List<String> tags) {
this.id = id;
this.userName = userName;
this.active = active;
this.tags = tags;
}
public Long getId() {
return this.id;
}
…Подробности и ограничения
Генерация выполняется в браузере с помощью WebAssembly; настроек нет.
Ключи в snake_case становятся полями в camelCase с аннотацией Jackson @JsonProperty; импорт Jackson и java.util.List добавляются, когда используются.
Числа отображаются в Long или Double, булевы значения — в Boolean; геттеры для boolean используют get, а не is.
Значение null типизируется как Object, а массив из null — как List<?>. Замените их конкретными типами, когда узнаете реальные данные.
FAQ
Можно ли преобразовать JSON-массив на корневом уровне?
Да. Корень становится классом-обёрткой Root с полем List<Root2>, а элементы массива — классом Root2.
Обрабатываются ли необязательные поля?
Ключи, отсутствующие в некоторых элементах массива, обнаруживаются, но в выводе Java пометка необязательности отбрасывается, поэтому каждое поле — обычный nullable тип-обёртка.
Генерирует ли он аннотации Lombok или records?
Нет. Он пишет обычные классы с явными конструкторами, геттерами и сеттерами.
Как типизируются значения null?
Поле, равное null в образце, становится Object (private Object note;), поскольку вывести конкретный тип невозможно. Дайте образец с реальным значением, чтобы получить String, Long или вложенный класс.