JSON naar Java

Gratis online JSON naar Java tool, zet JSON-data met één klik om naar Java POJO entity-klassen met annotaties. Ondersteunt 4 serialisatie-annotatiebibliotheken (Lombok / Jackson / Gson / Fastjson), Lombok @Data automatisch gestroomlijnd, optionele Serializable interface en automatische generatie van toString / equals / hashCode, 4 veldnaamstrategieën, geneste klassen automatisch gegenereerd.

Gerelateerde aanbevelingen

Over JSON naar Java POJO en Java entity-klassen

Een JSON naar Java tool (JSON to Java Converter) is een praktisch hulpmiddel dat JSON-datastructuren automatisch omzet naar standaard Java POJO-klassencode. Het bevrijdt ontwikkelaars van het herhalende werk van het handmatig schrijven van package / import / private velden / getter / setter, en is bijzonder geschikt om voorbeeld-JSON uit API-interfacedocumentatie snel om te zetten naar direct compileerbare Java entity-klassen.

POJO (Plain Old Java Object) is in de Java-gemeenschap de afkorting voor "gewoon Java-object", met als beperkingen: ① privévelden (private); ② publieke getter / setter-methoden om velden te benaderen; ③ geen framework-afhankelijkheid (zoals geen overerving van HttpServlet / EJB etc.). POJO is de kerngegevensdrager van populaire frameworks zoals Spring Boot / Hibernate / Jackson; de essentie van JSON naar Java is het statisch maken van de dynamische JSON-structuur als POJO-type.

Deze tool ondersteunt 4 gangbare serialisatie-annotatiebibliotheken: ① Gson (Google, @SerializedName-annotatie); ② Jackson (Spring Boot-standaard, @JsonProperty + @JsonFormat-annotaties); ③ Fastjson (Alibaba, @JSONField-annotatie); ④ Lombok (@Data / @Builder / @NoArgsConstructor / @AllArgsConstructor-collectie). Ontwikkelaars kunnen vrij kiezen op basis van het serialisatieframework dat in het project wordt gebruikt, zonder verdere verwerking in de IDE.

De Lombok @Data-modus is een geavanceerde functie van deze tool: na inschakeling bevat de gegenereerde Java-klasse slechts 5 regels (@Data + velden), alle getter / setter / equals / hashCode / toString worden tijdens het compileren automatisch door Lombok gegenereerd. Vergeleken met IDE-sjabloongeneratie of handmatig geschreven POJO verbetert de leesbaarheid van de broncode met 80%+ en dalen de onderhoudskosten met 60%+. Opmerking: het project moet de lombok-afhankelijkheid bevatten (Maven / Gradle-coördinaten).

Een ander onderscheidend hoogtepunt is "ZIP-download met meerdere bestanden + automatische organisatie van package-pad": traditionele online tools kunnen alleen afzonderlijke klassen kopiëren en plakken, terwijl deze tool met één klik een ZIP-pakket kan downloaden met daarin een mappenstructuur georganiseerd op package-naam (bijv. com/geekformat/pojo/), die na extractie direct met de "Import Project"-functie van de IDE in batch kan worden geïmporteerd, zodat het handmatig aanmaken van pakkagemappen overbodig wordt.

Toepassingsgevallen

  • Android-ontwikkeling: zet JSON die door de backend-API wordt geretourneerd om naar Java entity-klassen (POJO), met optionele Gson / Moshi / Fastjson / Jackson-annotaties die direct bruikbaar zijn voor deserialisatie
  • Spring Boot-backend: zet voorbeeld-JSON uit API-interfacedocumentatie snel om naar DTO / VO / Entity-klassen, in combinatie met Lombok @Data om de hoeveelheid code te beperken
  • Koppeling met externe interfaces: zet de respons-JSON van de tegenpartij om naar het bijbehorende Java-model, kies de bijbehorende serialisatie-annotatie (Jackson / Fastjson / Gson) voor een naadloze koppeling
  • Microservice-architectuur: uniforme aanvraag-/responsgegevensmodellen voor RPC-interfaces, zodat meerdere teams dezelfde Java-klassedefinitie delen
  • Onderwijs en training: in datastructuurcursussen of Java-onderwijs JSON naar POJO demonstreren om objectgeoriënteerd modelleren te illustreren
  • API-documentatie schrijven: Java entity-voorbeelden insluiten in Swagger / OpenAPI / Knife4j-documentatie
  • Voorbereiding van unit-tests: zet JSON fixtures om naar Java-klassen en gebruik Jackson-deserialisatie voor testdata-gedreven tests
  • Datamigratiescripts: zet JSON-configuratiebestanden om naar Java-klassen voor sterk getypeerde toegang in bedrijfslogica
  • Frontend Mock-koppeling: de backend zet eerst het JSON-model om naar Java, terwijl de frontend de bijbehorende TypeScript interface / Java POJO ontvangt
  • Code review: zet door de API geretourneerde JSON direct om naar leesbare POJO's, zodat veldnamen tijdens code review eenvoudig te bespreken zijn
  • Refactoring van oudere projecten: code die gebaseerd is op dynamische JSONObject-toegang refactoren naar sterk getypeerde toegang op basis van POJO
  • Entity / DTO multi-rol modellering: dezelfde JSON genereert UserEntity (DB-laag) + UserDTO (API-laag) + UserVO (view-laag), met mogelijkheid om verschillende annotaties te kiezen
  • Koppeling met snake_case backend-API: de backend-API retourneert snake_case-velden, een frontend Java-systeem schakelt "Converteren naar camelCase" + Gson/Jackson-annotaties in voor naadloze integratie
  • DTO's die persistentie vereisen: vink "Implementeer Serializable" aan om deze direct te gebruiken in Redis-cache of gedistribueerde Session-opslag

Hoe te gebruiken

  1. Plak een JSON-object (aanbevolen) of -array in de linker editor, of klik op "Sample" om een Chinees voorbeeld te laden (met geneste address / company / tags)
  2. Klik op de "Settings"-knop in de werkbalk (of de knop met de klassenaam) en kies in het popup-venster: ① stel de root-klassenaam in (bijv. User) en package-naam (bijv. com.example.entity); ② kies de serialisatie-annotatiebibliotheek (Gson / Jackson / Fastjson / Lombok / geen); ③ kies de codestijl (toString / equals / hashCode / constructor / Serializable); ④ kies de veldnaamstrategie (behoud zoals het is / camelCase / alles in kleine letters / UPPER_SNAKE)
  3. De tool converteert automatisch binnen 400ms, rechts worden alle gegenereerde Java-klassen weergegeven (elke klasse een onafhankelijke kaart, de titelbalk toont realtime de huidige annotatiebibliotheek en Lombok-badge); bij JSON-fouten verschijnt de knop "JSON herstellen"
  4. Controleer of de gegenereerde klassenamen, veldnamen en annotaties aan de verwachtingen voldoen; indien nodig kun je de key-namen in de bron-JSON aanpassen of de Settings opnieuw openen om de opties te wijzigen
  5. Als je tevreden bent, klik je op de "Kopiëren"-knop van een afzonderlijke klasse om deze in de IDE te plakken, of klik je op "Download ZIP" in de werkbalk om alle klassen in één keer te downloaden (georganiseerd in mappenstructuur op basis van package-pad)

Functies

  • 4 serialisatie-annotatiebibliotheken: Gson (@SerializedName) / Jackson (@JsonProperty + @JsonFormat voor datums) / Fastjson (@JSONField) / Lombok (@Data), met schakelaar om te wisselen
  • Lombok @Data modus: genereert automatisch de combinatie @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor, waardoor de Java-klasse wordt teruggebracht van ~50 naar ~5 regels
  • 4 veldnaamstrategieën: behoud zoals het is / snake_case naar camelCase (user_name → userName) / alles in kleine letters / UPPER_SNAKE constante stijl
  • Vrij combineerbare codestijl: optioneel genereren van toString / equals / hashCode / constructor zonder parameters / constructor met alle parameters / implementatie van Serializable interface
  • Slimme type-inferentie: herkent automatisch String / Integer / Double / Boolean / List<Object> / geneste objecttypes, geen handmatige typering nodig
  • Geneste klassen automatisch gegenereerd: geneste objecten worden automatisch omgezet naar onafhankelijke Java-klassen (genoemd naar eerste letter als hoofdletter), objecten in arrays krijgen automatisch een klassenaam volgens de regel "verwijder meervouds-s"
  • Array-generieken automatisch uitgevouwen: JSON-arrays worden automatisch omgezet naar Java List<T>-generieken, elementtype wordt afgeleid op basis van het eerste item
  • Compleet POJO-sjabloon: genereert een volledig .java-bestand met package-declaratie + bestandskopcommentaar (Copyright + automatische tijdstempel) + import + privévelden + getter/setter
  • ZIP-download met meerdere bestanden: alle gegenereerde klassen worden georganiseerd op package-pad (bijv. com/example/entity/User.java), met één klik verpakt als ZIP met mappenstructuur
  • Aangepaste package-naam + klassenaam: vrij instellen van package (bijv. com.example.entity) en root-klassenaam (bijv. User), alle klassenamen worden afgeleid van de root-klassenaam
  • Inspringregeling: aan de rechterkant wisselen tussen 2 / 4 spaties inspringen, afgestemd op de teamcode-conventies
  • Kopieer afzonderlijke klasse: elke gegenereerde Java-klasse heeft een eigen "Kopiëren"-knop, eenvoudig in IDE te plakken
  • Automatisch converteren + fouten herstellen: 400ms debounce voor automatische conversie, bij JSON-fouten verschijnt de knop "JSON herstellen" die veelvoorkomende fouten (overtollige komma's, enkele aanhalingstekens) repareert
  • Voorbeelddata + bestandsupload: ingebouwde Chinese voorbeelddata (met geneste address / company / tags / scores), ondersteunt slepen of klikken om .json / .txt-bestanden te uploaden
  • Lokale geschiedenis: localStorage bewaart de laatste 200 invoeren, na verversen of per ongeluk sluiten van de pagina eenvoudig te herstellen
  • Lokaal in de browser: alle JSON-parsing, Java-generatie en ZIP-verpakking vinden in je browser plaats via JavaScript, data wordt niet naar een server geüpload

Codevoorbeelden

Java: POJO gegenereerd door deze tool deserialiseren met Jackson

java

In een Spring Boot-project is het meest voorkomende gebruik: een POJO gegenereerd door deze tool met Jackson deserialiseren vanuit een API-respons.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.geekformat.pojo.User;
import com.geekformat.pojo.Address;

public class ApiClient {
    private final ObjectMapper objectMapper = new ObjectMapper();

    public User getUser(int userId) throws Exception {
        // 1) Roep de API aan om de JSON-string op te halen
        String json = httpClient.get("https://api.example.com/users/" + userId);

        // 2) Direct deserialiseren naar de POJO gegenereerd door deze tool
        User user = objectMapper.readValue(json, User.class);

        // 3) Sterk getypeerde toegang tot velden (compileertijd typecontrole)
        System.out.println("User: " + user.getName());
        if (user.getAddress() != null) {
            System.out.println("City: " + user.getAddress().getCity());
        }
        return user;
    }

    public static void main(String[] args) throws Exception {
        ApiClient client = new ApiClient();
        User user = client.getUser(123);
        System.out.println(user.getName());
    }
}

Java: Lombok @Data + @Builder gebruikswijze

java

Code gegenereerd door de Lombok-modus van deze tool, met bijbehorende gebruikswijze: objecten construeren via de builder-keten, tijdens het compileren wordt de volledige POJO door Lombok gegenereerd.

import com.geekformat.pojo.User;

public class UserService {

    public User createUser() {
        // Lombok @Builder-modus: aan elkaar gekoppelde aanroep, intuïtiever dan traditionele setter
        User user = User.builder()
            .id(1)
            .userName("Alice")
            .email("alice@example.com")
            .isActive(true)
            .createdAt("2026-07-08T10:00:00.000Z")
            .build();

        System.out.println(user);
        // Lombok @Data genereert automatisch toString():
        // User(id=1, userName=Alice, email=alice@example.com, ...)

        return user;
    }

    public boolean isValid(User user) {
        // Lombok @Data genereert automatisch equals() en hashCode()
        return user != null && user.getId() != null;
    }
}

/*
 * Bijbehorende pom.xml-afhankelijkheid:
 * <dependency>
 *     <groupId>org.projectlombok</groupId>
 *     <artifactId>lombok</artifactId>
 *     <version>1.18.30</version>
 *     <scope>provided</scope>
 * </dependency>
 */

Commandoregel: ZIP gedownload door deze tool uitpakken en in IDE importeren

bash

Wat door deze tool wordt gedownload is een ZIP-pakket (georganiseerd op package-pad), na extractie direct te importeren in een IDE.

# 1) Na het downloaden van de ZIP (bestandsnaam zoiets als User.zip)
unzip User.zip -d src/main/java/

# 2) Controleer de mappenstructuur
tree src/main/java/
# src/main/java/
# └── com/
#     └── example/
#         └── entity/
#             ├── User.java
#             ├── Address.java
#             └── Company.java

# 3) In IntelliJ IDEA: klik met de rechtermuisknop op de com-map → "Mark Directory as" → "Sources Root"
#    Of in Eclipse: File → Import → Existing Projects into Workspace

# 4) Direct gebruiken in een Spring Boot-project
#    UserController.java
#    @PostMapping("/users")
#    public ResponseEntity<User> createUser(@RequestBody User user) {
#        userService.save(user);
#        return ResponseEntity.ok(user);
#    }

# 5) Verifieer met een compile
mvn compile
# [INFO] BUILD SUCCESS

# 6) (Optioneel) vergeet bij gebruik van Lombok niet de lombok-afhankelijkheid aan pom.xml toe te voegen
#    <dependency>
#        <groupId>org.projectlombok</groupId>
#        <artifactId>lombok</artifactId>
#    </dependency>

Veelgestelde vragen

Hoe zet ik JSON om naar een Java POJO-klasse?

Plak de JSON-inhoud in het invoerveld, de tool converteert automatisch binnen 400ms; of klik op de "Convert"-knop in de werkbalk. Na de conversie worden alle gegenereerde Java-klassen rechts weergegeven, elke klasse heeft een eigen "Kopiëren"-knop; klik op "Download ZIP" in de werkbalk om alle klassen in één keer te downloaden.

Welke JSON-datastructuren worden ondersteund?

Twee structuren worden ondersteund: ① JSON-object (als root-klasse, genereert automatisch public class RootBean { ... }); ② JSON-array (het eerste object van de array dient als root-klasse-sjabloon). Alle geneste objecten worden recursief verwerkt tot onafhankelijke klassen, objecten in arrays worden recursief verwerkt tot klassen die horen bij het List-elementtype.

Wat zit er in de gegenereerde Java-klasse?

Elk gegenereerd .java-bestand bevat: ① bestandskopcommentaar (Copyright + automatische tijdstempel); ② package-declaratie; ③ import-statement (inclusief List / Objects / Serializable / Gson / Jackson / Fastjson / Lombok etc. automatisch naar behoefte); ④ public class-declaratie (optioneel implements Serializable); ⑤ privévelden (private, met annotaties naar behoefte); ⑥ standaard getter / setter-methoden (of alleen Lombok-annotaties); ⑦ optionele toString / equals / hashCode-methoden. Volledig direct compileerbaar met javac.

Ondersteunt het genereren van Gson / Jackson / Fastjson / Lombok-annotaties?

Ja. Selecteer in de groep "Serialisatie-annotatiebibliotheek" van het Settings-venster: ① Gson (voegt @SerializedName("oorspronkelijke key") toe aan elk veld); ② Jackson (voegt @JsonProperty toe aan elk veld, datumvelden krijgen extra @JsonFormat); ③ Fastjson (voegt @JSONField(name="oorspronkelijke key") toe aan elk veld); ④ Lombok (voegt @Data toe aan de klasse, optioneel @Builder / @NoArgsConstructor / @AllArgsConstructor); ⑤ Geen annotaties (standaard, alleen pure POJO). De geselecteerde bibliotheek importeert automatisch het bijbehorende pakket.

Hoe ziet de gegenereerde code eruit in de Lombok @Data-modus?

Na het inschakelen van Lombok wordt de gegenereerde Java-klasse sterk ingekort. Bijvoorbeeld class User met Lombok ingeschakeld heeft slechts 5 regels: @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + velddeclaratie. Alle getter / setter / equals / hashCode / toString worden tijdens het compileren automatisch door Lombok gegenereerd, de leesbaarheid van de broncode verbetert aanzienlijk. Opmerking: het project moet de Lombok-afhankelijkheid bevatten (voeg lombok-coördinaten toe aan pom.xml / build.gradle), en de IDE moet de Lombok-plugin installeren.

Hoe converteer ik snake_case veldnamen naar camelCase?

Selecteer in de groep "Veldnaamstrategie" van het Settings-venster de modus "Converteren naar camelCase", de tool converteert JSON-veldnamen automatisch van snake_case naar de Java-aanbevolen naamstijl. Bijvoorbeeld user_name → userName, created_at → createdAt, is_active → isActive. Als je tegelijkertijd Gson/Jackson/Fastjson-annotaties selecteert, behouden de annotatiewaarden de oorspronkelijke snake_case-string, zodat deserialisatie correct wordt gemapt.

Hoe worden geneste JSON-objecten verwerkt?

De tool maakt automatisch onafhankelijke Java-klassen voor geneste objecten. Naamgevingsregel: de eerste letter van de key van het geneste object wordt een hoofdletter als klassenaam (bijv. address → Address), bij objecten in arrays wordt de key ontdaan van de afsluitende s en krijgt dan een hoofdletter (bijv. users → User). Alle geneste klassen bevatten eveneens volledige velden + getter/setter + annotaties.

Worden array-velden automatisch omgezet naar List?

Ja. Array-velden in JSON worden automatisch geconverteerd naar Java List<T>-generieken, waarbij het elementtype wordt afgeleid op basis van het eerste element van de array. Bijvoorbeeld ["a","b","c"] → List<String>; [{...},{...}] → List<User> (waarbij User een nieuwe klasse is op basis van de key); lege arrays [] krijgen standaard List<Object>.

Hoe wijzig ik de root-klassenaam en package-naam?

Rechtsboven in de werkbalk bevindt zich een Settings-knop (of een knop met klassenaam), klik hierop om het instellingenvenster te openen waarin je kunt instellen: ① root-klassenaam (standaard JsonRootBean); ② package-naam (standaard com.geekformat.pojo). Na wijziging worden alle gegenereerde klassenamen gesynchroniseerd en wordt de mappenstructuur in de ZIP georganiseerd volgens het package-pad.

Wordt er een enkel .java-bestand of een ZIP-pakket gedownload?

Er wordt een ZIP-pakket gedownload (JsonRootBean.zip) dat alle gegenereerde Java-klassen bevat, georganiseerd in een mappenstructuur op basis van het package-pad. Bij een package-naam com.geekformat.pojo is de bestandsstructuur in de ZIP: com/geekformat/pojo/JsonRootBean.java, com/geekformat/pojo/Address.java etc. Te openen met het unzip-commando of direct te importeren in een IDE.

Kan ik een afzonderlijke klasse direct naar de IDE kopiëren?

Ja. Elke gegenereerde Java-klasse wordt weergegeven als een onafhankelijke kaart met rechtsboven een "Kopiëren"-knop. Na klikken wordt de volledige code van de klasse (inclusief package + import + klassedefinitie + velden + annotaties + getter/setter) naar het klembord gekopieerd, klaar om direct in IntelliJ IDEA / Eclipse / VS Code te worden geplakt.

Hoe genereer ik een Lombok Builder-patroon met @Builder?

Ga in de groep "Codestijl" van het Settings-venster als volgt te werk: ① vink "Gebruik Lombok @Data om code te vereenvoudigen" aan (dit schakelt automatisch de lombok-annotatiebibliotheek in); ② vink "Genereer @Builder builder-patroon" aan. De gegenereerde klasse krijgt automatisch de @Builder-annotatie, te gebruiken als: User user = User.builder().id(1).name("Alice").build();

Hoe laat ik de gegenereerde klasse de Serializable interface implementeren?

Vink in de groep "Codestijl" van het Settings-venster "Implementeer Serializable interface" aan, de tool zal automatisch: ① implements Serializable aan de klassedeclaratie toevoegen; ② automatisch java.io.Serializable importeren. Geschikt voor scenario's waarin de POJO naar een bestand moet worden geschreven, via het netwerk moet worden verzonden of in een Redis-cache moet worden opgeslagen.

Wat is het verschil tussen JSON naar Java en JSON naar TypeScript?

Beide zetten JSON om naar typedefinities van de respectievelijke taal, maar met een ander zwaartepunt: ① Java genereert volledige POJO-klassen (inclusief package + import + private velden + getter/setter), direct compileerbaar en uitvoerbaar; ② TypeScript genereert interface- of type-declaraties die alleen de datastructuur beschrijven, zonder implementatie. De keuze hangt af van je ontwikkeltaal.

Kan de gegenereerde code worden gebruikt in een Spring Boot-project?

Ja. De door deze tool gegenereerde POJO-klassen voldoen aan de standaard Java Bean-specificatie (privévelden + getter/setter) en zijn compatibel met Jackson-deserialisatie van Spring Boot, MVC-formulierbinding en handmatige JPA-entity-definities. Voor Lombok-vereenvoudiging (@Data / @Builder) kun je dit met één klik inschakelen in het Settings-venster, zonder verdere IDE-refactoring.

Wat als het JSON-formaat onjuist is?

De tool detecteert automatisch de geldigheid van JSON, bij fouten verschijnt rechts een rode foutmelding en de knop "JSON herstellen" is beschikbaar. Na klikken worden veelvoorkomende fouten automatisch gerepareerd: ① overtollige komma's aan het einde; ② enkele aanhalingstekens vervangen door dubbele; ③ ontbrekende aanhalingstekens bij keys aanvullen; ④ opmerkingen verwijderen. Na succesvolle reparatie kan de Java-klasse direct worden gegenereerd.

Wordt de data naar een server geüpload? Hoe zit het met privacy en veiligheid?

Volledig lokaal in de browser. Alle JSON-parsing, Java-klasse-generatie en ZIP-verpakking vinden in je browser plaats via JavaScript (JSZip), de ingevoerde JSON-data en de gegenereerde Java-code worden niet naar een server geüpload en ook niet in de cloud vastgelegd of in de cache opgeslagen. Gevoelige JSON's met interne interfacevelden, niet-gelanceerde bedrijfsstructuren of niet-openbare API-responses kunnen met een gerust hart worden gebruikt; bij het sluiten van de pagina wordt alles gewist.

Gaat het genereren van een grote JSON met 10.000 regels niet traag werken?

De tool kent geen expliciete regelbeperking, maar de browser wordt trager bij het parsen en renderen van zeer grote JSON-bestanden. Suggesties: ① splits de JSON en converteer in batches; ② focus per keer op slechts één nestingsniveau; ③ als je batchgewijs 100+ klassen wilt genereren, overweeg dan direct een IDE-codegeneratieplugin (zoals MyBatis Generator, MapStruct) of een speciale Java-codegeneratiebibliotheek (JavaPoet / JOOQ).

Probleemoplossing

Melding "Voer JSON-data in" of soortgelijke fout

Het linker invoerveld is leeg of bevat alleen witruimte. Zorg dat je geldige JSON-inhoud hebt geplakt, klik op "Sample" om een Chinees voorbeeld te laden, of klik op "Upload" om een .json / .txt-bestand te selecteren.

Melding "Unexpected token ... in JSON at position N"

JSON-formaat is ongeldig. Veelvoorkomende oorzaken: ① overtollige komma aan het einde (bijv. {"a":1,}); ② enkele aanhalingstekens in plaats van dubbele; ③ JS-objectnotatie (bijv. {key: value}) in plaats van JSON (bijv. {"key": "value"}). Klik op de knop "JSON herstellen" om enkele fouten automatisch te repareren.

Gegenereerde annotaties komen niet overeen met het in het project gebruikte framework

Schakel in de groep "Serialisatie-annotatiebibliotheek" van het Settings-venster: ① voor Spring Boot-projecten Jackson; ② voor Android-projecten Gson; ③ voor Alibaba Java-backend Fastjson; ④ voor compacte code Lombok; ⑤ als je geen enkele annotatiebibliotheek wilt introduceren, kies dan "Geen annotaties". Na wisseling worden alle veldannotaties en imports automatisch opnieuw gegenereerd.

Lombok-compilatie geeft "kan symbool niet vinden"

Het project bevat geen Lombok-afhankelijkheid. Voeg toe aan pom.xml: `<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>`; de IDE heeft ook de Lombok-plugin nodig (IntelliJ IDEA → Plugins → zoek Lombok → Install).

Genereer zonder Lombok, maar houd de code compact

Vink in het Settings-venster Lombok @Data niet aan, gebruik in plaats daarvan de traditionele modus met behoud van compactheid: ① vink "Genereer constructor zonder parameters" + "Genereer constructor met alle parameters" + "Genereer toString / equals / hashCode" aan; ② het team kan in de IDE Postfix Completion gebruiken (de .var / .field-sjablonen van IntelliJ) om in batch te genereren. Of gebruik direct de ingebouwde Generate POJO-functie van de IDE (Alt+Insert → Constructor / Getter / Setter).

Na snake_case → camelCase geeft de IDE "kan symbool niet vinden"

"Converteren naar camelCase" wijzigt alleen de veldnaam, maar de door Lombok @Data automatisch gegenereerde getter/setter worden gegenereerd op basis van de nieuwe veldnaam (bijv. user_name → userName → getUserName / setUserName), dus de code zelf is correct. Als er nog steeds een fout optreedt, controleer dan: ① of de IDE succesvol opnieuw heeft gecompileerd; ② of de Lombok-plugin is geïnstalleerd en ingeschakeld; ③ maak de IDE-cache leeg (File → Invalidate Caches).

Klassenaam van genest object is niet wat ik wil (bijv. categories wordt Categori)

De tool past voor objecten in arrays de regel "verwijder afsluitende s + eerste letter hoofdletter" toe, wat bij onregelmatige meervoudsvormen zoals categories niet goed werkt. Suggesties: ① wijzig de key in de bron-JSON naar enkelvoud (bijv. categories → category); ② of hernoem de klasse na generatie in de IDE met IDE's Rename (en wijzig daarbij alle referenties).

Mappenstructuur van uitgepakte ZIP klopt niet

De mappen in de ZIP zijn georganiseerd op basis van de package-instelling (standaard com/geekformat/pojo/). Als de locatie na extractie niet klopt, kun je: ① de package-naam wijzigen (bijv. naar com.example) en opnieuw downloaden; ② unzip -d src/main/java gebruiken om de extractiemap op te geven; ③ of in de IDE direct File → Open de uitgepakte map openen.

Datumvelddeserialisatie mislukt in Jackson-modus

De tool detecteert automatisch ISO 8601-datumreeksen zoals "2026-07-08T10:00:00.000Z" en voegt @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX") toe. Als je datumformaat anders is (bijv. "2026-07-08"), kun je: ① in de bron-JSON het ISO 8601-formaat gebruiken; ② of na generatie handmatig de @JsonFormat pattern-parameter aanpassen.

Chinese bestandsnamen in gedownloade ZIP zijn corrupt in Windows

ZIP-bestandsnamen en Java-klassenamen zijn standaard in het Engels (ASCII-tekens), dus die vertonen geen codeproblemen. Als de bron-JSON Chinese keys bevat (de gegenereerde veldnamen zijn dan Chinees), kan de IDE klagen over naamgevingsconventies maar zonder codeproblemen. Het wordt aanbevolen om JSON-keys in het Engels te schrijven (camelCase), wat beter past bij de Java-codeerconventies.

Pagina wordt traag bij het genereren van 100+ geneste klassen

De tool kent geen expliciete limiet voor het aantal klassen, maar de browserprestaties voor het renderen van zeer grote DOM's nemen merkbaar af. Suggesties: ① splits de JSON in een paar onafhankelijke modules en converteer afzonderlijk; ② of gebruik direct de ingebouwde codegeneratietool van de IDE (JSON to POJO-plugin van IntelliJ); ③ het wordt aanbevolen om nestingniveaus tot maximaal 6 te beperken, anders kun je de JSON-structuur beter herstructureren.

Array is van het nummertype maar er wordt List<Object> gegenereerd

Dit gebeurt meestal wanneer de array leeg is [] en standaard wordt geïnferreerd als List<Object>. Voeg minstens één voorbeeldelement toe aan de bron-JSON (bijv. [1,2,3]), dan leidt de tool het type af op basis van het eerste element; of wijzig List<Object> na generatie handmatig naar List<Integer>.

null-veld wordt gegenereerd als Object-type

JSON null-waarden worden door de tool standaard geïnferreerd als Object-type (omdat het werkelijke type niet kan worden bepaald). Dit is een veilige keuze om verkeerde inschattingen te voorkomen. Als je het type zeker weet, kun je in de bron-JSON een voorbeeldwaarde aan dat veld toekennen (bijv. "field": "" wordt String geïnferreerd) en het voorbeeld na generatie verwijderen.

ZIP-mappenstructuur is niet bijgewerkt na wijziging van de package-naam

Na wijziging van de package moet je opnieuw op de knop "Convert" klikken (of de wijziging wordt automatisch na 400ms geactiveerd). Nadat het Settings-dialoogvenster is gesloten, zal de tool bij de volgende invoerwijziging alle bestanden opnieuw genereren met de nieuwe package-naam.

Het door de tool automatisch gegenereerde bestandskopcommentaar (zoals Copyright) wil ik verwijderen

De tool genereert standaard een bestandskopcommentaar met Copyright + automatische tijdstempel. Indien niet gewenst, kun je dit in de IDE verwijderen met een globale Find & Replace, of de generateFileHeader-functie in de broncode van de tool aanpassen (vereist herdeploy).

Conversie van "snake_case backend + Java frontend"

Typisch scenario: de backend-API (bijv. Python / Go-service) retourneert snake_case-velden, terwijl het frontend Java-systeem camelCase-velden nodig heeft. Werkwijze: ① kies in het Settings-venster de Jackson- of Gson-annotatiebibliotheek; ② kies de veldnaamstrategie "Converteren naar camelCase"; ③ de tool genereert automatisch: veldnaam = userName (camelCase), annotatiewaarde = "user_name" (oorspronkelijke key behouden), bij deserialisatie wordt volgens de annotatie gemapt, en bij toegang volgens de Java naamgevingsconventie.

Woordenlijst

POJO
Plain Old Java Object, gewoon Java-object. Beperkingen: privévelden + publieke getter/setter + geen framework-afhankelijkheid. Wat deze tool genereert zijn standaard POJO's.
JavaBean
Een andere benaming uit de vroege Java-gemeenschap voor POJO, vereist een publieke constructor zonder parameters + privévelden + publieke getter/setter. De door deze tool gegenereerde klassen voldoen aan de JavaBean-specificatie.
DTO (Data Transfer Object)
Gegevensoverdrachtobject, veelgebruikt als gegevensdrager tussen processen (API / RPC). De door deze tool gegenereerde POJO kan direct als DTO worden gebruikt.
VO (Value Object)
Waardeobject, meestal gebruikt in de view-laag (gegevens die de Controller naar de frontend terugstuurt). De door deze tool gegenereerde POJO is hier eveneens geschikt voor.
Entity
Entity-object, komt overeen met één record uit een databasetabel. De door deze tool gegenereerde POJO kan dienen als basisklasse voor @Entity in JPA / Hibernate (na handmatig toevoegen van annotaties).
@SerializedName
Veldmapping-annotatie uit de Gson-bibliotheek. In de Gson-modus van deze tool wordt @SerializedName("oorspronkelijke key") automatisch aan elk veld toegevoegd, zodat bij deserialisatie volgens de oorspronkelijke JSON-veldnaam wordt gemapt.
@JsonProperty
Veldmapping-annotatie uit de Jackson-bibliotheek. In de Jackson-modus van deze tool wordt @JsonProperty("oorspronkelijke key") automatisch aan elk veld toegevoegd; datumvelden krijgen extra @JsonFormat om het serialisatieformaat te definiëren.
@JSONField
Veldmapping-annotatie uit de Alibaba Fastjson-bibliotheek. In de Fastjson-modus van deze tool wordt @JSONField(name = "oorspronkelijke key") automatisch aan elk veld toegevoegd.
Lombok @Data
Samenstelling-annotatie uit de Lombok-bibliotheek, equivalent aan @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor. In de Lombok-modus van deze tool wordt deze annotatie in één keer aan de klasse toegevoegd.
Lombok @Builder
Builder-patroon-annotatie van Lombok. Na het aanvinken wordt deze automatisch toegevoegd, waardoor een aan elkaar te koppelen builder()-methode ontstaat.
Serializable
Java-markeringinterface; na implementatie kan een object worden geserialiseerd (bijv. naar een bestand schrijven / via het netwerk verzenden / in Redis-cache opslaan). Na het aanvinken van "Implementeer Serializable" voegt deze tool automatisch implements Serializable toe en importeert java.io.Serializable.
Geneste klasse (Nested Class)
Onafhankelijke Java-klasse die automatisch wordt gegenereerd door de tool voor geneste JSON-objecten. Naamgevingsregel: eerste letter van de key van het geneste object wordt een hoofdletter (bijv. address → Address).
List-generiek
Interface uit het Java Collections Framework; de tool converteert JSON-arrays automatisch naar List<T>, waarbij T wordt afgeleid uit het eerste item van de array (bijv. ["a"] → List<String>).
getter / setter
Standaard accessormethoden van een Java Bean. Getter heet getXxx() om het veld terug te geven, setter heet setXxx(value) om het veld in te stellen. In de Lombok-modus worden ze automatisch gegenereerd door @Data; in de traditionele modus worden ze expliciet gegenereerd door de tool.
package-declaratie
Eerste niet-commentaarcoderegel van een Java-bestand, die aangeeft tot welke namespace de klasse behoort. Deze tool genereert deze automatisch op basis van de door de gebruiker ingestelde package-naam, en organiseert de ZIP volgens de mappenstructuur com/xxx/yy.
snake_case → camelCase
Conversie van veldnaamstrategie. Deze tool ondersteunt automatische conversie van user_name → userName, is_active → isActive, created_at → createdAt, conform de Java naamgevingsconventie.
JSZip
ZIP-verpakkingsbibliotheek in JavaScript aan de browserzijde. Deze tool gebruikt deze om direct in de browser een ZIP-bestand te genereren, zonder verwerking op de server.
localStorage-geschiedenis
Lokale key-value opslag van de browser (capaciteit ca. 5-10MB). Deze tool gebruikt localStorage om de laatste 200 invoeren permanent op te slaan.
Debounce
Frontend prestatie-optimalisatietechniek: hoogfrequente gebeurtenissen samenvoegen tot de laatste uitvoering. Deze tool hanteert 400ms debounce om vertraging bij het parsen van grote bestanden te voorkomen.
tryFixJSON
Ingebouwde JSON-herstelfunctie van deze tool: herstelt automatisch overtollige komma's aan het einde, vervangt enkele aanhalingstekens door dubbele, vult ontbrekende aanhalingstekens bij keys aan en verwijdert opmerkingen, en andere veelvoorkomende fouten.

Snelzoektabel voor mapping van JSON-type naar Java-type

Door de tool automatisch afgeleide JSON-datatypes met bijbehorende Java-types:

JSON waardevoorbeeldDetectiemethodeGegenereerd Java-typeStandaard veldwaarde
nullvalue === nullObjectnull
true / falsetypeof value === 'boolean'Booleanfalse
42typeof value === 'number' && Number.isInteger(value)Integer0
3.14typeof value === 'number' && !Number.isInteger(value)Double0.0
"hallo"typeof value === 'string'Stringnull
[...] (lege array)Array.isArray(value) && value.length === 0List<Object>new ArrayList<>()
["a","b"]Array.isArray(value) && typeof value[0] === 'string'List<String>new ArrayList<>()
[1,2,3]Array.isArray(value) && typeof value[0] === 'number'List<Integer>new ArrayList<>()
[{...},{...}]Array.isArray(value) && typeof value[0] === 'object'List<Xxx>new ArrayList<>()
{...} (genest object)typeof value === 'object' && !Array.isArray(value)Xxx (onafhankelijke klasse)new Xxx()

Vergelijkingstabel van 4 serialisatie-annotatiebibliotheken

De 4 gangbare Java JSON-serialisatie-annotatiebibliotheken die door de tool worden ondersteund, kies op basis van het in je project gebruikte framework:

AnnotatiebibliotheekGegenereerde annotatieAutomatische importToepassingsscenario
Geen annotatiesGeen (pure POJO)GeenScenario's zonder framework-afhankelijkheid; vereist handmatig deserialiseren via een generieke bibliotheek zoals jackson-databind
Gson@SerializedName("user_name")import com.google.gson.annotations.SerializedName;Android-toepassingen, Google Gson-ecosysteem, Retrofit + Gson
Jackson@JsonProperty("user_name") + @JsonFormat voor datumveldenimport com.fasterxml.jackson.annotation.JsonProperty; + JsonFormatStandaard serialisatieframework van Spring Boot, web-backend API-interfaces
Fastjson@JSONField(name = "user_name")import com.alibaba.fastjson.annotation.JSONField;Alibaba-ecosysteem, interne Java-systemen, hoogpresterende deserialisatiescenario's
LombokKlasse-niveau @Data (+ optioneel @Builder / @NoArgsConstructor / @AllArgsConstructor)import lombok.Data; (+ overige)Alle projecten die behoefte hebben aan ingekorte boilerplate-code; combineerbaar met elke serialisatiebibliotheek

Vergelijkingstabel van 4 veldnaamstrategieën

De 4 strategieën voor veldnaamconversie die door de tool worden ondersteund, geoptimaliseerd voor verschillende JSON-bronnen:

StrategieInvoervoorbeeldUitvoer Java-veldnaamToepassingsscenario
Behoud zoals het isuser_nameuser_nameJSON-veldnaam voldoet al aan de Java naamgevingsconventie (bijv. interne API); of team is gewend aan snake_case-stijl
Converteren naar camelCaseuser_nameuserNameJava-aanbevolen naamstijl; backend-API's met slangenstijl (bijv. Python / Go backend)
Alles in kleine lettersUserNameusernameKoppeling met speciale databasevelden (zeldzaam)
UPPER_SNAKEuser_nameUSER_NAMEJava constantedefinities (public static final); doorgaans niet aanbevolen voor reguliere POJO-velden

Lombok @Data-modus versus traditionele POJO-modus

Vergelijking van beide codestijlen qua aantal regels, leesbaarheid en afhankelijkheden:

VergelijkingsitemLombok @Data-modusTraditionele POJO-modus
Aantal regels broncode~5 regels (4 annotaties + velden)~50 regels (per veld 4-5 regels getter/setter + klasse)
LeesbaarheidZeer hoog (in één oogopslag alle velden en annotaties zichtbaar)Gemiddeld (veel boilerplate-code)
CompileerresultaatVolledige bytecode (IDE / javac genereert via lombok-processor)Volledige bytecode (direct gecompileerd)
Runtime-afhankelijkheidLombok-afhankelijkheid vereist (compileertijd)Geen extra afhankelijkheid
IDE-ondersteuningLombok-plugin vereist (IntelliJ / Eclipse)Native ondersteund
Code-onderhoudskostenLaag (gewoon een veld toevoegen is voldoende)Hoog (voor elk veld moet handmatig getter/setter worden toegevoegd)
Geschikt teamMiddelgrote tot grote projecten die Lombok al gebruikenProjecten die Lombok-annotaties afwijzen; onderhoud van oudere projecten

Privacy & Security

Alle JSON-parsing, Java-klasse-generatie en ZIP-verpakking in deze JSON naar Java tool vinden volledig lokaal in je browser plaats via JavaScript (JSZip), de ingevoerde JSON-data en de gegenereerde Java-code worden niet naar een server geüpload en ook niet in de cloud vastgelegd, in de cache opgeslagen of bewaard. Gevoelige JSON's met interne interfacevelden, niet-gelanceerde bedrijfsstructuren of niet-openbare API-responses kunnen met een gerust hart worden gebruikt; bij het sluiten van de pagina wordt alle data gewist.

Authoritative References