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

Как использовать

  1. Вставьте JSON слева, загрузите пример или импортируйте `.json` / `.txt` файл
  2. В Settings задайте имя корневого класса, package, библиотеку аннотаций, стратегию именования и опции Lombok / Serializable
  3. Дождитесь автогенерации или нажмите Convert и проверьте список Java-классов справа
  4. Скопируйте нужные классы или скачайте архив через 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

javascript
function 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

python
import 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 после генерации

java
import 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Обычная строка
18IntegerЦелое число
3.14DoubleЧисло с плавающей точкой
[{...}]List<User>Массив объектов → List<T>

Как выбрать библиотеку аннотаций

БиблиотекаОсновная аннотацияКогда подходит
Jackson@JsonPropertyСтандартный JSON-мэппинг в Spring Boot
Gson@SerializedNameAndroid и лёгкая сериализация
Fastjson@JSONFieldПроекты на основе Fastjson
Lombok@Data / @BuilderМинимум шаблонного кода в POJO

Authoritative References