JSON в Java
Преобразуйте JSON в Java POJO, DTO или model-классы и сразу переносите готовый код в IDE. Вся генерация выполняется локально в браузере.
Похожие
Что делает инструмент JSON в Java?
Инструмент JSON в Java автоматически преобразует структуру JSON в стандартные Java POJO-классы. Он избавляет от ручного написания package, import, private-полей, getter и setter.
Это особенно полезно в Spring Boot, Android, MyBatis и интеграции внешних API, когда нужно быстро превратить пример ответа в готовую Java-модель. Вложенные объекты превращаются в отдельные классы, а массивы — в `List<T>`.
Инструмент GeekFormat поддерживает Gson, Jackson, Fastjson, Lombok, Serializable, Builder, стратегии именования полей и ZIP-скачивание. Полученный код можно сразу вставить в проект.
Варианты использования
- Преобразование примеров JSON из Spring Boot API в DTO и VO
- Создание JavaBean для Android или Java-клиентов по ответам API
- Быстрое получение Jackson / Gson моделей для интеграции со сторонними сервисами
- Генерация компактных Lombok POJO для уменьшения шаблонного кода
- Разбиение сложного вложенного JSON на понятные Java-классы
- Скачивание всех классов одним ZIP и массовый импорт в IDE
Как использовать
- Вставьте JSON слева, загрузите пример или импортируйте `.json` / `.txt` файл
- В Settings задайте имя корневого класса, package, библиотеку аннотаций, стратегию именования и опции Lombok / Serializable
- Дождитесь автогенерации или нажмите Convert и проверьте список Java-классов справа
- Скопируйте нужные классы или скачайте архив через Download ZIP
Функции
- Поддержка нескольких библиотек аннотаций: Gson, Jackson, Fastjson и Lombok
- Упрощение через Lombok: можно включить `@Data`, `@Builder` и конструкторы вместо длинного шаблонного кода
- Стратегии именования полей: сохранение исходных имён или преобразование snake_case в camelCase
- Автогенерация вложенных классов: вложенные JSON-объекты превращаются в отдельные Java-классы
- Преобразование массивов в List<T>: тип элементов выводится автоматически
- Дополнительный код по выбору: `toString`, `equals`, `hashCode`, Serializable и конструкторы
- ZIP со всеми файлами: несколько `.java` классов можно скачать одним архивом с package-структурой
- Локальная работа без сервера: JSON, генерация кода и упаковка ZIP происходят прямо в браузере
Примеры кода
Пример вывода типа Java по JSON-значению на JavaScript
javascriptfunction toJavaFieldType(value) {
if (value === null) return 'Object';
if (Array.isArray(value)) return 'List<Object>';
if (typeof value === 'number') return Number.isInteger(value) ? 'Integer' : 'Double';
if (typeof value === 'boolean') return 'Boolean';
if (typeof value === 'string') return 'String';
if (typeof value === 'object') return 'NestedType';
return 'Object';
}
console.log(toJavaFieldType({ id: 1 }.id));
// => IntegerПример генерации Java-полей из JSON на Python
pythonimport json
def java_type(value):
if value is None:
return 'Object'
if isinstance(value, bool):
return 'Boolean'
if isinstance(value, int):
return 'Integer'
if isinstance(value, float):
return 'Double'
if isinstance(value, str):
return 'String'
if isinstance(value, list):
return 'List<Object>'
if isinstance(value, dict):
return 'NestedType'
return 'Object'
sample = json.loads('{"name":"Alice","age":18}')
for key, value in sample.items():
print(f'private {java_type(value)} {key};')Пример Lombok POJO после генерации
javaimport lombok.Data;
import lombok.Builder;
@Data
@Builder
public class User {
private Integer id;
private String name;
}Часто задаваемые вопросы
Как преобразовать JSON в Java POJO?
Вставьте JSON в левую панель, и инструмент автоматически или по кнопке создаст Java-классы. Затем можно копировать отдельные классы или скачать ZIP со всем результатом.
Какие аннотации поддерживаются?
Поддерживаются `@SerializedName` для Gson, `@JsonProperty` для Jackson, `@JSONField` для Fastjson, а также Lombok-аннотации вроде `@Data` и `@Builder`.
Что происходит со вложенными объектами JSON?
Каждый вложенный объект преобразуется в отдельный Java-класс, а родительский класс получает поле соответствующего типа. Это помогает работать даже с глубокими структурами.
Массивы автоматически станут List<T>?
Да. Массив строк будет преобразован в `List<String>`, массив объектов — например, в `List<User>`. Пустой массив обычно станет `List<Object>`.
Можно ли преобразовать snake_case в camelCase?
Да. Выберите стратегию именования camelCase, и `user_name` превратится в `userName`, при этом исходное имя можно сохранить в аннотации для сериализации.
Как выглядит код в режиме Lombok?
При включении Lombok генератор создаёт короткий класс с `@Data`, `@Builder`, `@NoArgsConstructor` и `@AllArgsConstructor` вместо ручных getter и setter.
Подходит ли результат для Spring Boot?
Да. При выборе Jackson или Lombok сгенерированные классы хорошо подходят для DTO, request/response моделей и обычных bean-классов в Spring Boot.
JSON отправляется на сервер?
Нет. Всё выполняется локально в браузере, поэтому можно безопаснее работать даже с внутренними или чувствительными JSON-данными.
Устранение неполадок
Появляется ошибка Invalid JSON
Проверьте синтаксис JSON. Лишние запятые, одинарные кавычки и ключи без кавычек можно сначала исправить через JSON Repair.
Тип массива определяется не так, как ожидалось
Пустые массивы или массивы со смешанными типами часто становятся `List<Object>`. Для более точного результата поместите типичный элемент первым.
Поля остаются в snake_case
Скорее всего, в Settings выбрана стратегия `asis`. Переключите её на camelCase и сгенерируйте код повторно.
Lombok-код не распознаётся в IDE
Добавьте зависимость Lombok в проект и включите поддержку annotation processing или плагин Lombok в IDE.
Большой JSON создаёт слишком много классов
Очень большие структуры удобнее разбивать на части и генерировать поэтапно. При необходимости используйте несколько корневых моделей.
Глоссарий
- POJO
- Обычный Java-объект без жёсткой привязки к фреймворку. Часто используется как модель данных для JSON.
- JavaBean
- Класс с private-полями, getter/setter и обычно пустым конструктором по соглашениям Java.
- DTO
- Data Transfer Object — класс для передачи данных между слоями, сервисами или API.
- Lombok
- Библиотека Java, генерирующая шаблонный код вроде getter, setter и builder через аннотации.
- @JsonProperty
- Аннотация Jackson для связывания JSON-ключа с Java-полем.
- @SerializedName
- Аннотация Gson для сохранения исходного имени JSON-ключа при маппинге на Java-поле.
- Serializable
- Маркерный интерфейс Java, позволяющий сериализовать объект для хранения или передачи.
- List<T>
- Обобщённый коллекционный тип Java, который часто используется для представления массивов JSON.
Соответствие JSON-типов и Java-типов
| JSON значение | Java тип | Комментарий |
|---|---|---|
"Alice" | String | Обычная строка |
18 | Integer | Целое число |
3.14 | Double | Число с плавающей точкой |
[{...}] | List<User> | Массив объектов → List<T> |
Как выбрать библиотеку аннотаций
| Библиотека | Основная аннотация | Когда подходит |
|---|---|---|
Jackson | @JsonProperty | Стандартный JSON-мэппинг в Spring Boot |
Gson | @SerializedName | Android и лёгкая сериализация |
Fastjson | @JSONField | Проекты на основе Fastjson |
Lombok | @Data / @Builder | Минимум шаблонного кода в POJO |
Authoritative References
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python