Zamiana próbki JSON na POJO, rekordy lub klasy Lombok w Javie z adnotacjami dla Jacksona
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Wystarczy wkleić próbkę JSON, aby otrzymać klasy Java z adnotacjami dla Jacksona, jako POJO z getterami i setterami, rekordy lub Lombok @Data. Liczby całkowite stają się int, powyżej 2 147 483 647 long, każda wartość dziesiętna zmienia pole na double, a wartość null lub brakująca używa typu opakowującego, np. Integer.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej próbkę JSON, na przykład odpowiedź API, do lewego pola.
Kod Java pojawia się w trakcie pisania: jeden plik Root.java z zagnieżdżoną klasą statyczną na każdy obiekt, polami w camelCase i @JsonProperty tam, gdzie klucz jest inny.
Wybierz POJO z getterami i setterami, rekord (Java 16+) lub Lombok @Data i ustaw nazwę klasy głównej.
Kliknij Kopiuj albo Pobierz, aby zapisać Root.java, i odczytaj JSON za pomocą ObjectMapper z Jacksona.
Java wczytuje JSON do klas, zwykle za pomocą Jacksona, a każdy obiekt w JSON potrzebuje klasy, której pola mają właściwe typy i nazwy. Konwerter pisze takie klasy na podstawie próbki, więc długa odpowiedź API staje się kompilującym się kodem Java po jednym wklejeniu.
Jak dobierane są typy.
| Wartość JSON | Typ Java |
|---|---|
| "text" | String |
| true / false | boolean |
| 42 (tylko liczby całkowite) | int lub long powyżej 32 bitów |
| 4.5 (wystąpiła jakakolwiek część dziesiętna) | double |
| null lub brak w niektórych elementach | Integer, Boolean, Double |
| tylko null lub różne rodzaje | Object |
| [ ... ] | List<...> |
| { } pusty | Map<String, Object> |
| { ... } | zagnieżdżona klasa statyczna |
Jeden plik. Wynikiem jest pojedynczy plik Root.java: klasa główna zawiera każdą inną klasę jako zagnieżdżoną klasę public static, którą Jackson potrafi utworzyć i która nie wymaga dodatkowych plików. Gdy JSON jest tablicą lub pojedynczą wartością, komentarz podaje typ do odczytu, np. List<Root.RootItem>.
Nazwy i klucze. Pola są w camelCase, więc user_name staje się userName, a @JsonProperty("user_name") zachowuje klucz. Słowa kluczowe Javy dostają podkreślnik, np. class_. Pole takie jak xCoord jest zapisywane jako xcoord, bo inaczej Jackson połączyłby je z getterem getXCoord pod inną nazwą. Pusty klucz jest pomijany przez @JsonIgnoreProperties, ponieważ Jackson nie potrafi go nazwać.
Trzy style. POJO ma prywatne pola, gettery i settery i działa wszędzie. Rekord (Java 16+) jest krótki i niemutowalny. Lombok @Data zachowuje pola, a resztę pisze Lombok.
Wynik POJO dla 9 próbek skompilowano javac i odczytano Jacksonem 2.17, traktując nieznane klucze i null w typach prostych jako błędy. Nic, co zostanie wklejone, nie opuszcza przeglądarki.
Po wklejeniu próbki JSON do konwertera obok pojawia się kod Java: jeden plik Root.java z zagnieżdżoną klasą statyczną dla każdego obiektu. Należy dodać Jacksona do projektu i odczytać JSON przez new ObjectMapper().readValue(json, Root.class), co wypełnia każde pole na podstawie jego klucza.
Umieszczenie wszystkich klas w Root utrzymuje cały model w jednym pliku, który kompiluje się bez zmian. Jackson może utworzyć klasę zagnieżdżoną tylko wtedy, gdy jest statyczna, bo klasa wewnętrzna wymaga najpierw instancji klasy zewnętrznej, dlatego każda zagnieżdżona klasa jest zadeklarowana jako public static.
Pole używa typu opakowującego, np. Integer, Long, Double lub Boolean, gdy w próbce ma wartość null albo niektóre obiekty pomijają klucz. Prosty int nie przechowa null, a brakujący klucz po cichu stałby się 0, więc typ opakowujący odróżnia brak wartości od zera.
Rekordy, od Javy 16, są najkrótsze i niemutowalne, a Jackson od wersji 2.12 odczytuje je bezpośrednio. POJO z getterami i setterami działa w każdej wersji Javy i z każdą biblioteką. Adnotacja @Data z Lomboka pisze gettery i settery podczas kompilacji, dzięki czemu kod źródłowy pozostaje krótki.
Jackson znajduje właściwości przez gettery i nazywa getXCoord jako xcoord, zmniejszając początkowe wielkie litery. Pole o nazwie xCoord nie trafiłoby wtedy na własny getter, a właściwość rozdzieliłaby się na dwie. Pole nazywa się xcoord, a @JsonProperty("xCoord") zachowuje oryginalny klucz.
Nie. Konwersja działa w przeglądarce bez żadnego żądania do serwera, a JSON nie jest zapisywany, więc odpowiedzi API z tokenami lub danymi osobowymi zostają na urządzeniu. Po zamknięciu karty nic nie pozostaje.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Konwerter JSON na klasy Java a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.