JSON till Java-klass
Klistra in ett JSON-exempel så genererar verktyget en eller flera Java-klasser med rätt fälttyper, getters, setters och annoteringar för JSON-biblioteket. Stöder Jackson (@JsonProperty), Gson (@SerializedName) och Lombok (@Data/@Builder) för renare kod. Nästlade objekt blir inre klasser eller syskonklasser, beroende på vilken layout du väljer.
Så konverterar du JSON till Java
-
1
Klistra in JSON
Ett enda exempel räcker; flera exempel förbättrar bedömningen av om ett fält kan vara null.
-
2
Välj bibliotek
Jackson (vanligast i Spring), Gson (för Android och vissa äldre projekt) eller en enkel POJO utan annoteringar.
-
3
Välj tillägg
Lombok för automatiskt genererade getters/setters, builder-mönstret samt equals/hashCode. Eller lämna det enkelt.
-
4
Välj nästlingsstil
Syskonklasser i samma fil (public-klasser i Java 17+ måste ligga i separata filer) eller nästlade statiska klasser.
-
5
Kopiera koden
Klistra in den i ditt projekt. Klassnamnen motsvarar JSON-nycklarna; paketet sätts till det du konfigurerar.
Exempel på utdata: Jackson + Lombok
Indata:
{ "firstName": "Alice", "age": 30, "address": { "city": "Madrid" } }
Utdata:
@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;
}
Typmappning
| JSON | Java-typ |
|---|---|
| sträng | String |
| heltal (≤ Integer.MAX) | Integer / int |
| stort heltal | Long / BigInteger |
| decimaltal | Double / BigDecimal |
| booleskt värde | Boolean / boolean |
| ISO-datum | LocalDate (Jackson JSR-310) |
| ISO-datum och tid | Instant / OffsetDateTime |
| null (med ett syskonfält som inte är null) | Wrapper-typ (t.ex. Integer) |
| array | List<T> |
| objekt | nästlad klass |
Välja mellan wrapper-typ och primitiv typ
- Primitiv (
int,long,boolean), kan inte vara null, effektiv, ingen autoboxning. - Wrapper (
Integer,Long,Boolean), kan vara null; krävs om fältet kan saknas eller vara null i JSON.
Som standard använder generatorn wrapper-typ för allt som anses kunna vara null, och primitiv typ i övrigt.
Jackson kontra Gson
| Funktion | Jackson | Gson |
|---|---|---|
| Utbredning i Spring | Ja, standard | Nej (kräver konfiguration) |
| Prestanda | Snabbare | Långsammare |
| Stöd för JSR-310-datum | Via extra modul | Via extra modul |
| Polymorfism | @JsonTypeInfo |
RuntimeTypeAdapter |
| Tolerans för avslutande kommatecken | Nej (som standard) | Ja |
Vanliga misstag
- Använda primitiva typer för fält som kan vara null.
intkan inte vara null; Jackson kastar ett fel om JSON innehåller"age": null. AnvändInteger. - Saknade datummoduler. Jackson behöver
jackson-datatype-jsr310förInstant/LocalDate. Utan den faller datum tillbaka tillStringeller epoch-long-värden. - Dela wrapper-typer mellan orelaterade klasser. Om två JSON-former båda har en nästlad
Addressskapar generatorn tvåAddress-klasser. Byt namn eller slå ihop dem manuellt. - Glömma
@JsonIgnoreProperties(ignoreUnknown = true). Strikt Jackson kastar fel vid okända egenskaper; lägg till denna annotering (eller konfigurera den globalt) för tolerant deserialisering.
Vanliga frågor
Jackson i de flesta fall, det är standard i Spring, snabbare och har rikare stöd för polymorfism. Gson är lättare och mer känt i Android, även om Android-projekt allt oftare använder Moshi eller kotlinx.serialization.
Lombok skär bort mycket standardkod (getters, setters, equals, hashCode, builder). Det används brett men kräver Lomboks annoteringsprocessor i bygget. Inaktivera det om ditt projekt undviker Lombok av beroendehygieniska skäl.
Fält som är null i något av de observerade exemplen blir wrapper-typer (Integer i stället för int) så att de kan innehålla null. Jackson deserialiserar då "age": null utan fel. Lägg till @JsonInclude(Include.NON_NULL) för att hoppa över null vid serialisering.
Ja, om du väljer “record”. Record-klasser är koncisa, oföränderliga och fungerar med Jackson 2.12+. För Spring Boot 3-projekt är kombinationen av record och Lombok-fri generering det moderna valet.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Referens för kortkommandon
Sök dokumenterade standardkommandon för VS Code, Chrome och Bash med GNU Readline i macOS, Windows och Linux.
HTML-formaterare
Formatera HTML lokalt i webbläsaren med indrag på två eller fyra blanksteg. HTML laddas inte upp eller valideras.
E-postvalidator
Validera en e-postadress: RFC 5322-syntaxkontroll, live-slagning av MX-poster samt detaljer om lokal del, domän och längd. Ingen e-post skickas.
EditorConfig-generator
Generera en .editorconfig-fil med dina regler för indragsstil och -storlek, radslut, teckenuppsättning och blanksteg för enhetlig formatering i alla IDE:er och editorer.
Verktyget finns på andra språk
- JSON ke Kelas Java [ID]
- JSON sang lớp Java [VI]
- JSON a Clase Java [ES]
- JSON vers classe Java [FR]
- JSON을 Java 클래스로 [KO]
- JSON naar Java-klasse [NL]
- JSON から Java クラスへ [JA]
- JSON เป็นคลาส Java [TH]
- JSON إلى فئة Java [AR]
- JSON zu Java-Klasse [DE]
- JSON na klasę Java [PL]
- JSON para Classe Java [PT]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]
- JSON to Java Class [EN]