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 med vanlig JavaScript, React eller Vue: TypeScript, Babel, CSS eller Sass, bilder, HtmlWebpackPlugin, en utvecklingsserver och raden för npm install.
Protocol Buffers-avkodare
Avkoda Protobuf-byte lokalt från hex, Base64, Base64URL, text eller fil, granska fälttolkningar och exportera en privat rapport.
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.
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.
XSD-validerare
Validera ett XML-dokument mot ett XSD-schema och rapportera element- och typavvikelser med exakta radnummer.
YAML till JSON
Omvandla YAML-konfiguration till JSON för verktyg och API:er som bara accepterar JSON. Hanterar ankare, merge-nycklar och nästlade strukturer.
Verktyget finns på andra språk
- JSON إلى فئة Java [AR]
- JSON zu Java-Klasse [DE]
- JSON から Java クラスへ [JA]
- JSON na klasę Java [PL]
- JSON ke Kelas Java [ID]
- JSON a Clase Java [ES]
- JSON vers classe Java [FR]
- JSON para Classe Java [PT]
- JSON sang lớp Java [VI]
- JSON เป็นคลาส Java [TH]
- JSON naar Java-klasse [NL]
- JSON을 Java 클래스로 [KO]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]