Pomoc

JSON na POJO: klasy lub rekordy Java z JSON-a

Wklej JSON i dostań gotowy kod Java: klasę dla każdego obiektu, z prywatnymi polami, konstruktorem bez argumentów oraz getterami i setterami, albo rekordy Javy, jeśli wolisz. Obiekty zagnieżdżone są zapisane wewnątrz klasy nadrzędnej, więc cały wynik mieści się w jednym pliku .java. Dodaj adnotacje Jackson lub Gson, gdy potrzebujesz oryginalnych kluczy JSON. Konwersja odbywa się w przeglądarce, a JSON nie jest nigdzie wysyłany.


JSON to POJO online: jak to zrobić krok po kroku

  1. Wklej JSON do pola JSON (widać w nim „Wklej tutaj JSON...”). Wklejony tekst jest konwertowany od razu. Gdy piszesz, kod odświeża się około 300 milisekund po tym, jak przestaniesz.
  2. Przeczytaj klasy pod Kod Java. Wiersz pod spodem, na przykład „Wygenerowano 2 klasy.”, pokazuje, ile ich powstało.
  3. Wybierz Kopiuj, tuż pod kodem. Przycisk na chwilę pokazuje „Skopiowano”. Zapisz kod w pliku nazwanym jak klasa główna, na przykład Root.java.
  4. Aby zmienić wynik, rozwiń Ustawienia: wpisz Nazwa klasy głównej (domyślnie Root), wybierz w Adnotacje opcję Brak, Jackson lub Gson albo zaznacz Użyj rekordów zamiast klas. Kod zmienia się od razu po zmianie ustawienia.
  5. Wybierz Wyczyść, aby opróżnić pole i zacząć od nowa.

JSON POJO Java: przykład

To wklejasz: { "user_id": 7, "name": "Ana", "price": 4.5, "tags": ["a", "b"], "address": { "city": "Kyoto" } }

Przy Adnotacje ustawionych na „Brak” wynik zaczyna się od import java.util.List; i public class Root. Pola to Integer userId, String name, Double price, List<String> tags i Address address. Dalej idą konstruktor bez argumentów oraz gettery i settery, takie jak getUserId i setUserId.

Zagnieżdżony obiekt address stał się Address, czyli public static class wewnątrz Root, dlatego wystarczy jeden plik. Klucz user_id stał się polem userId. Wiersz stanu ostrzega o tym: „Zmieniono 1 nazwę pola, aby pasowała do Javy.”

Rekordy Java z adnotacjami Jackson

Ustaw Nazwa klasy głównej na Order, wybierz w Adnotacje opcję Jackson i zaznacz Użyj rekordów zamiast klas. Ten sam JSON zamieni się w public record Order(...).

Każdy komponent rekordu ma @JsonProperty("key") z oryginalnym kluczem JSON, więc user_id nadal trafia do userId. Jeśli wybierzesz Gson, te same komponenty dostaną @SerializedName("key") wraz z importem Gson. Rekordy wymagają Javy 16 lub nowszej.

Jak typy JSON zamieniają się w typy Java

Wszystkie typy są opakowane, więc każde pole może się nie pojawić albo mieć wartość null.

Liczby są czytane dokładnie tak, jak je zapisano, więc długi identyfikator nigdy nie jest zaokrąglany. Importy pojawiają się tylko wtedy, gdy kod ich używa. Jeśli klucz występuje dwa razy w tym samym obiekcie, wygrywa ostatni.

Jak wybierane są nazwy klas i pól

Nazwa klasy głównej jest oczyszczana do poprawnej nazwy Java, a puste pole daje Root. Gdy sam JSON zaczyna się od tablicy obiektów, Root opisuje jeden element, a strona podpowiada, żeby odczytać JSON jako List<Root>.

Gdy JSON nie zostaje przyjęty

Czytnik jest surowy, tak jak sam JSON: komentarze, pojedyncze cudzysłowy i końcowe przecinki to błędy. Pod komunikatem „Nie można odczytać tego JSON-a” znajdziesz jasny powód i pozycję, na przykład „Wiersz 3, kolumna 5”, w rodzaju „Parser zatrzymał się na „}”. Sprawdź, czy tuż przed tym miejscem nie brakuje przecinka, dwukropka, nawiasu lub cudzysłowu.”

Poprawny JSON bez żadnego obiektu, taki jak 42 albo tablica liczb, pokazuje „W tym JSON-ie nie ma obiektu, z którego można utworzyć klasę.” Tekst dłuższy niż 2 000 000 znaków jest odrzucany, tak samo jak zagnieżdżenie głębsze niż 200 poziomów.


Najczęstsze pytania

Jak zamienić JSON na POJO w Javie?

Wklej JSON do pola „JSON” i skopiuj kod spod „Kod Java”. Dostaniesz jedną klasę na każdy obiekt JSON, z prywatnymi polami, publicznym konstruktorem bez argumentów i publicznymi metodami getX oraz setX. Zapisz kod w pliku nazwanym jak klasa główna, na przykład Root.java, a potem odczytaj JSON za pomocą Jacksona lub Gsona.

Jak zamienić tablicę JSON na obiekty Java?

Wklej tablicę obiektów bez zmian. Narzędzie opisuje jeden element tablicy jako klasę główną i podpowiada, żeby odczytać JSON jako List. W Jacksonie to TypeReference>, w Gsonie TypeToken>. Tablica wewnątrz obiektu staje się polem List, z klasą nazwaną od klucza.

Jak zachować oryginalne klucze JSON w Jacksonie lub Gsonie?

Otwórz „Ustawienia” i wybierz w „Adnotacje” opcję Jackson lub Gson. Jackson dodaje @JsonProperty("key"), a Gson @SerializedName("key") przy każdym polu, razem z importem. Przy „Brak” klucz taki jak user_id staje się polem userId, które nie wróci do JSON-a, o ile oryginalnego klucza nie zachowa adnotacja albo strategia nazewnictwa.

Czy mogę wygenerować rekordy Java z JSON-a?

Tak. Zaznacz „Użyj rekordów zamiast klas” w „Ustawienia”. Każdy obiekt JSON staje się public record Name(Type a, Type b) {}, a obiekty zagnieżdżone stają się rekordami wewnątrz rekordu nadrzędnego. Rekordy wymagają Javy 16 lub nowszej. Adnotacje nadal działają i trafiają na każdy komponent rekordu.

Dlaczego liczba JSON jest w jednym miejscu typu Integer, a w innym Double?

Typ zależy od zapisu liczby. Liczba całkowita to Integer, a gdy jest za duża dla Integer, to Long, a gdy za duża dla Long, to BigInteger. Liczba zapisana z kropką dziesiętną lub wykładnikiem to Double, nawet jeśli wynosi 1.0.

Co się dzieje, gdy obiekty w tablicy mają różne klucze?

Są scalane w jedną klasę, która zawiera każdy klucz widziany w którymkolwiek z nich, więc klucze występujące tylko w części obiektów też dostają pole. Jeśli klucz ma różne typy albo tablica jest pusta, pole dostaje typ Object lub List. Sprawdź takie pola ręcznie.

Czy narzędzie generuje klasy Kotlina lub adnotacje Lombok?

Nie. Wynik to zwykła Java: klasy z getterami i setterami albo rekordy. Jeśli używasz Lombok, usuń metody getter i setter i dodaj @Data do klasy. Klasę danych Kotlina musisz napisać osobno.

Jak duży może być JSON i czy jest wysyłany?

Do 2 000 000 znaków i do 200 poziomów zagnieżdżenia. Konwersja działa w twojej przeglądarce, więc JSON nie jest nigdzie wysyłany ani zapisywany.

Polecane

Pomaga utrzymać narzędzia za darmo. ✨

Zdjęcia poglądowe. Jestem Partnerem Amazon i otrzymuję wynagrodzenie z tytułu określonych zakupów dokonywanych za moim pośrednictwem.