У цій статті
Навіщо генерувати Java-класи з JSON
Багатослівний синтаксис класів Java робить написання POJO для десеріалізації JSON одним з найнудніших завдань у бекенд-розробці. Одна відповідь API з вкладеними об'єктами може вимагати десятків рядків гетерів, сетерів та конструкторів. Наш конвертер JSON у Java усуває цей шаблонний код, аналізуючи структури JSON та миттєво генеруючи готові до продакшну Java-класи.
Чи будуєте ви REST API клієнти, обробляєте webhook-навантаження або інтегруєте сторонні сервіси, генерація Java-класів із зразків JSON-даних гарантує, що ваші моделі відповідають фактичній структурі даних. Це зменшує помилки через неправильні назви полів, хибні типи та відсутні вкладені класи, які часто виникають при ручному написанні моделей.
Режими виводу
Конвертер підтримує кілька стилів Java-класів відповідно до вимог вашого проєкту та версії Java.
- POJO — традиційний Plain Old Java Object з приватними полями, гетерами, сетерами та конструктором без аргументів, сумісний з усіма версіями Java та фреймворками серіалізації
- Lombok @Data — анотовані класи, що використовують анотацію @Data від Lombok для автоматичної генерації гетерів, сетерів, equals, hashCode та toString, значно зменшуючи обсяг коду
- Java Records — record-класи Java 14+, що надають незмінні носії даних з автоматичними методами доступу, конструктором, equals, hashCode та toString в одному рядку оголошення
Спробуйте безкоштовно — реєстрація не потрібна
Конвертувати JSON у Java →Опції анотацій
Конвертер генерує анотації для популярних Java JSON-бібліотек для забезпечення правильного відображення полів.
- Jackson @JsonProperty — додає анотації @JsonProperty з оригінальною назвою ключа JSON, забезпечуючи правильну десеріалізацію навіть коли назви полів Java відрізняються від ключів JSON
- Користувацьке іменування — коли JSON використовує ключі snake_case або kebab-case, конвертер генерує camelCase назви полів Java з відображенням @JsonProperty на оригінальний формат ключа
- Вкладені класи — генерує правильно структуровані внутрішні класи або окремі класи верхнього рівня для вкладених об'єктів JSON, з відповідними операторами імпорту та посиланнями типів
Часті запитання
List чи ArrayList у згенерованому коді?
Конвертер генерує типи полів з використанням інтерфейсу List, а не реалізації ArrayList. Це відповідає найкращим практикам Java — програмування на інтерфейси, а не на реалізації. Ви можете ініціалізувати поля за допомогою ArrayList, LinkedList або будь-якої іншої реалізації List у ваших конструкторах.
Як конвертер обирає між примітивними та обгортковими типами?
За замовчуванням конвертер використовує обгорткові типи (Integer, Double, Boolean) замість примітивних (int, double, boolean). Обгорткові типи можуть представляти значення null з JSON, що важливо для необов'язкових полів. Використання примітивів для nullable JSON-полів мовчки конвертувало б null у 0 або false, приховуючи проблеми з даними.
Чи можна генерувати класи, сумісні з Gson замість Jackson?
Згенерований вивід POJO працює як з Jackson, так і з Gson без змін. Якщо вам потрібні специфічні анотації Gson, такі як @SerializedName, ви можете легко замінити @JsonProperty на @SerializedName — патерн відображення полів ідентичний. Згенеровані назви полів дотримуються конвенцій Java незалежно від бібліотеки серіалізації.