JSON naar Java-klasse
Plak een JSON-voorbeeld en de generator geeft een of meer Java-klassen terug met de juiste veldtypen, getters, setters en JSON-bibliotheekannotaties. Ondersteunt Jackson (@JsonProperty), Gson (@SerializedName) en Lombok (@Data/@Builder) voor schonere code. Geneste objecten worden interne of zusterklassen, afhankelijk van de indeling die je kiest.
Hoe je JSON naar Java converteert
-
1
Plak de JSON
Eén voorbeeld is genoeg; meerdere voorbeelden verbeteren de detectie of een veld null mag zijn.
-
2
Kies de bibliotheek
Jackson (het meest gebruikelijk in Spring), Gson (voor Android en enkele legacy-projecten) of een eenvoudige POJO zonder annotaties.
-
3
Kies extra opties
Lombok voor automatisch gegenereerde getters/setters, het builder-patroon en equals/hashCode. Of laat het eenvoudig.
-
4
Kies de nestingstijl
Zusterklassen in hetzelfde bestand (public-klassen in Java 17+ moeten in aparte bestanden staan) of geneste statische klassen.
-
5
Kopieer de code
Plak hem in je project. Klassennamen komen overeen met de JSON-sleutels; het package wordt ingesteld op wat je configureert.
Voorbeelduitvoer: Jackson + Lombok
Invoer:
{ "firstName": "Alice", "age": 30, "address": { "city": "Madrid" } }
Uitvoer:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JsonProperty("firstName")
private String firstName;
@JsonProperty("age")
private int age;
@JsonProperty("address")
private Address address;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Address {
@JsonProperty("city")
private String city;
}
Typetoewijzing
| JSON | Java-type |
|---|---|
| tekenreeks | String |
| geheel getal (≤ Integer.MAX) | Integer / int |
| groot geheel getal | Long / BigInteger |
| decimaal | Double / BigDecimal |
| booleaans | Boolean / boolean |
| ISO-datum | LocalDate (Jackson JSR-310) |
| ISO-datum en -tijd | Instant / OffsetDateTime |
| null (met een niet-null zusterveld) | Wrapper-type (bijv. Integer) |
| array | List<T> |
| object | geneste klasse |
Kiezen tussen wrapper- en primitief type
- Primitief (
int,long,boolean), niet-nullbaar, efficiënt, zonder auto-boxing. - Wrapper (
Integer,Long,Boolean), nullbaar, vereist als het veld in JSON kan ontbreken of null kan zijn.
De generator gebruikt standaard een wrapper-type voor alles wat als nullbaar wordt beschouwd, en anders een primitief type.
Jackson versus Gson
| Functie | Jackson | Gson |
|---|---|---|
| Alomtegenwoordigheid in Spring | Ja, standaard | Nee (configuratie vereist) |
| Prestaties | Sneller | Langzamer |
| JSR-310-datumondersteuning | Via extra module | Via extra module |
| Polymorfisme | @JsonTypeInfo |
RuntimeTypeAdapter |
| Tolerantie voor afsluitende komma | Nee (standaard) | Ja |
Veelvoorkomende fouten
- Primitieve typen gebruiken voor nullbare velden.
intkan niet null zijn; Jackson gooit een fout als de JSON"age": nullbevat. GebruikInteger. - Ontbrekende datummodules. Jackson heeft
jackson-datatype-jsr310nodig voorInstant/LocalDate. Zonder deze module vallen datums terug opStringof epoch-longs. - Wrapper-typen delen tussen niet-gerelateerde klassen. Als twee JSON-vormen beide een geneste
Addresshebben, maakt de generator tweeAddress-klassen aan. Hernoem of voeg ze handmatig samen. @JsonIgnoreProperties(ignoreUnknown = true)vergeten. Strikte Jackson gooit een fout bij onbekende eigenschappen; voeg deze annotatie toe (of configureer die globaal) voor tolerante deserialisatie.
Veelgestelde vragen
In de meeste gevallen Jackson: het is de standaard in Spring, sneller en met rijkere ondersteuning voor polymorfisme. Gson is lichter en beter bekend binnen Android, hoewel Android-projecten steeds vaker Moshi of kotlinx.serialization gebruiken.
Lombok schrapt veel boilerplate (getters, setters, equals, hashCode, builder). Het wordt breed gebruikt, maar vereist de Lombok-annotatieprocessor in je build. Schakel het uit als je project Lombok vermijdt om redenen van dependency-hygiëne.
Velden die in een van de waargenomen voorbeelden null zijn, worden wrapper-typen (Integer in plaats van int), zodat ze null kunnen bevatten. Jackson deserialiseert "age": null dan zonder fout. Voeg @JsonInclude(Include.NON_NULL) toe om null-waarden bij het serialiseren over te slaan.
Ja, als je “record” kiest. Records zijn beknopt, onveranderlijk en werken met Jackson 2.12+. Voor Spring Boot 3-projecten is de combinatie van records en generatie zonder Lombok de moderne keuze.
Gerelateerde tools
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
HTML-tekenreferentie
Een doorzoekbare lijst met HTML-entiteiten, hun benoemde en numerieke codes, plus kopiëren met één klik voor speciale tekens en symbolen.
Sneltoetsenoverzicht
Zoek gedocumenteerde standaardsneltoetsen voor VS Code, Chrome en Bash met GNU Readline op macOS, Windows en Linux.
E-mailvalidator
Valideer een e-mailadres: RFC 5322-syntaxcontrole, live MX-record-zoekopdracht, plus details over lokaal deel, domein en lengte. Er wordt geen e-mail verstuurd.
EditorConfig-generator
Genereer een .editorconfig-bestand met uw regels voor inspringstijl en -grootte, regeleinde, tekenset en witruimte voor consistente opmaak in alle IDE's en editors.
CSS-kaartgenerator
Maak de CSS voor een kaartcontainer: achtergrond, rand, hoekradius, binnenruimte en een zachte slagschaduw, met direct voorbeeld en copy-pastecode.
Tool beschikbaar in andere talen
- JSON a Clase Java [ES]
- JSON till Java-klass [SV]
- JSON vers classe Java [FR]
- JSON เป็นคลาส Java [TH]
- JSON إلى فئة Java [AR]
- JSON ke Kelas Java [ID]
- JSON을 Java 클래스로 [KO]
- JSON から Java クラスへ [JA]
- JSON zu Java-Klasse [DE]
- JSON na klasę Java [PL]
- JSON sang lớp Java [VI]
- JSON para Classe Java [PT]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]