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.
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.
Slug-generator
Omvandla valfri titel eller fras till en URL-säker slug. Gemener, bindestrecksseparerad, accentfri, valfri stoppord, Unicode-medveten.
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-blobgenerator
Generera organiska, slumpmässiga SVG-blobformer med justerbar komplexitet, kontrast och seed. Kopiera SVG-pathen för bakgrunder, hero-sektioner och avatarmasker.
Verktyget finns på andra språk
- JSON na klasę Java [PL]
- JSON a Clase Java [ES]
- JSON을 Java 클래스로 [KO]
- JSON vers classe Java [FR]
- JSON naar Java-klasse [NL]
- JSON para Classe Java [PT]
- JSON เป็นคลาส Java [TH]
- JSON sang lớp Java [VI]
- JSON إلى فئة Java [AR]
- JSON から Java クラスへ [JA]
- JSON ke Kelas Java [ID]
- JSON zu Java-Klasse [DE]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]