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
Webpack-konfigurationsgenerator
Skapa en webpack.config.js för webpack 5 från ett kort formulär: ange entry, output-mapp och mode, och slå sedan på TypeScript, Babel, en CSS-loader, HtmlWebpackPlugin och en dev-server.
SVG-blobgenerator
Generera organiska, slumpmässiga SVG-blobformer med justerbar komplexitet, kontrast och seed. Kopiera SVG-pathen för bakgrunder, hero-sektioner och avatarmasker.
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.
Generator för platshållarbilder
Skapa en bild på 1–4000 px med egna färger och text, ladda ned PNG eller kopiera webbadress och HTML.
SQL till NoSQL
Gör om en enda SQL-SELECT-sats till en MongoDB-find()-fråga. Mappar kolumner, WHERE (=, >, <, >=, <=, !=), AND/OR, ORDER BY och LIMIT. Ingen JOIN, GROUP BY eller aggregering.
SVG-våggenerator
Generera en mjuk SVG-vågavdelare för rubriker och sidfötter med justerbar amplitud, frekvens, färg och position upptill eller nedtill. Kopiera SVG-koden.
Verktyget finns på andra språk
- JSON ke Kelas Java [ID]
- JSON na klasę Java [PL]
- JSON เป็นคลาส Java [TH]
- JSON a Clase Java [ES]
- JSON zu Java-Klasse [DE]
- JSON から Java クラスへ [JA]
- JSON vers classe Java [FR]
- JSON naar Java-klasse [NL]
- JSON para Classe Java [PT]
- JSON을 Java 클래스로 [KO]
- JSON sang lớp Java [VI]
- JSON إلى فئة Java [AR]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]