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
Webpack-configuratiegenerator
Maak een webpack.config.js voor webpack 5 voor gewoon JavaScript, React of Vue: TypeScript, Babel, CSS of Sass, afbeeldingen, HtmlWebpackPlugin, een devserver en de npm install-regel.
Telefoonnummers controleren
Controleer de structuur van telefoonnummers per land en bekijk regio, type en E.164-, internationale, nationale en RFC 3966-notatie.
SVG-golfgenerator
Genereer een vloeiende SVG-golfscheiding voor headers en footers met instelbare amplitude, frequentie, kleur en positie boven of onder. Kopieer de SVG-code.
XSD-validator
Valideer een XML-document tegen een XSD-schema en rapporteer discrepanties tussen elementen en typen, inclusief de exacte regelnummers.
Protocol Buffers-decoder
Decodeer Protobuf-bytes lokaal uit hex, Base64, Base64URL, tekst of een bestand, bekijk veldinterpretaties en exporteer een privérapport.
Decimaal naar hexadecimaal converter
Voer een decimaal geheel getal in en ontvang direct de hexadecimale waarde, inclusief negatieve waarden als 64-bits tweecomplement.
Tool beschikbaar in andere talen
- JSON zu Java-Klasse [DE]
- JSON을 Java 클래스로 [KO]
- JSON till Java-klass [SV]
- JSON vers classe Java [FR]
- JSON ke Kelas Java [ID]
- JSON para Classe Java [PT]
- JSON na klasę Java [PL]
- JSON เป็นคลาส Java [TH]
- JSON sang lớp Java [VI]
- JSON a Clase Java [ES]
- JSON から Java クラスへ [JA]
- JSON إلى فئة Java [AR]
- JSON 转 Java 类 [ZH]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON'dan Java Sınıfına [TR]
- JSON в класс Java [RU]