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.
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.
Protocol Buffers-decoder
Decodeer Protobuf-bytes lokaal uit hex, Base64, Base64URL, tekst of een bestand, bekijk veldinterpretaties en exporteer een privérapport.
XSD-validator
Valideer een XML-document tegen een XSD-schema en rapporteer discrepanties tussen elementen en typen, inclusief de exacte regelnummers.
XML-formatter
Maak XML-documenten netjes op met consistente inspringing en spoor welgevormdheidsfouten op met exacte regelnummers.
XML naar JSON
Zet XML-documenten om naar schone JSON, waarbij attributen, tekstknopen en arrays waar nodig behouden blijven. Drie stijlen: compact, Badgerfish of letterlijk.
Tool beschikbaar in andere talen
- JSON vers classe Java [FR]
- JSON을 Java 클래스로 [KO]
- JSON إلى فئة Java [AR]
- JSON zu Java-Klasse [DE]
- JSON till Java-klass [SV]
- JSON から Java クラスへ [JA]
- JSON ke Kelas Java [ID]
- JSON na klasę Java [PL]
- JSON a Clase Java [ES]
- JSON para Classe Java [PT]
- JSON sang lớp Java [VI]
- JSON เป็นคลาส Java [TH]
- JSON 转 Java 类 [ZH]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]