JSON in classe Java
Incolla un campione JSON e il generatore emette una o più classi Java con i tipi di campo corretti, getter, setter e annotazioni della libreria JSON. Supporta Jackson (@JsonProperty), Gson (@SerializedName) e Lombok (@Data/@Builder) per un codice più pulito. Gli oggetti annidati diventano classi interne o sorelle, a seconda del layout scelto.
Come convertire JSON in Java
-
1
Incolla il JSON
Un singolo campione è sufficiente; più campioni migliorano il rilevamento della nullabilità.
-
2
Scegli la libreria
Jackson (il più comune in Spring), Gson (Android e alcuni progetti legacy), o POJO semplice senza annotazioni.
-
3
Scegli extra
Lombok per getter/setter generati automaticamente, pattern builder, equals/hashCode. Oppure lascialo semplice.
-
4
Scegli lo stile annidato
Classi sorelle nello stesso file (le classi pubbliche Java 17+ devono essere file separati) o classi statiche annidate.
-
5
Copia il codice
Inserisci nel tuo progetto. I nomi delle classi corrispondono alle chiavi JSON; il pacchetto è impostato su ciò che configuri.
Esempio di output: Jackson + Lombok
Input:
{ "firstName": "Alice", "age": 30, "address": { "city": "Madrid" } }
Output:
@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;
}
Mappatura dei tipi
| JSON | Tipo Java |
|---|---|
| stringa | String |
| intero (≤ Integer.MAX) | Integer / int |
| intero grande | Long / BigInteger |
| decimale | Double / BigDecimal |
| booleano | Boolean / boolean |
| data ISO | LocalDate (Jackson JSR-310) |
| data e ora ISO | Instant / OffsetDateTime |
| null (con fratello non nullo) | Tipo wrapper (es. Integer) |
| array | List<T> |
| oggetto | Classe annidata |
Scegliere tra tipi boxed e primitivi
- Primitivo (
int,long,boolean), non nullo, efficiente, senza auto-boxing. - Boxed (
Integer,Long,Boolean), nullo, necessario se il campo può essere assente o nullo in JSON.
Il generatore predefinisce boxed per tutto ciò che è considerato nullo, altrimenti primitivo.
Jackson vs Gson
| Caratteristica | Jackson | Gson |
|---|---|---|
| Ubiquità in Spring | Sì, predefinito | No (richiede configurazione) |
| Prestazioni | Più veloce | Più lento |
| Supporto date JSR-310 | Tramite modulo extra | Tramite modulo extra |
| Polimorfismo | @JsonTypeInfo |
RuntimeTypeAdapter |
| Tolleranza alla virgola finale | No (di default) | Sì |
Errori comuni
- Utilizzare tipi primitivi per campi nullabili.
intnon può essere nullo; Jackson genererà un errore se il JSON ha"age": null. UsaInteger. - Moduli data mancanti. Jackson ha bisogno di
jackson-datatype-jsr310perInstant/LocalDate. Senza di esso, le date tornano aStringo long epoch. - Condivisione di tipi wrapper tra classi non correlate. Se due forme JSON hanno entrambe un
Addressannidato, il generatore crea due classiAddress. Rinomina o unisci manualmente. - Dimenticare
@JsonIgnoreProperties(ignoreUnknown = true). Jackson rigoroso genera un errore su proprietà sconosciute; aggiungi questa annotazione (o configura globalmente) per una deserializzazione tollerante.
Domande frequenti
Jackson nella maggior parte dei casi, è il predefinito di Spring, più veloce e ha un supporto polimorfico più ricco. Gson è più leggero e meglio conosciuto in Android, anche se i progetti Android utilizzano sempre più Moshi o kotlinx.serialization.
Lombok riduce molto il boilerplate (getter, setter, equals, hashCode, builder). È ampiamente utilizzato ma richiede il processore di annotazioni Lombok nel tuo build. Disabilitalo se il tuo progetto evita Lombok per motivi di igiene delle dipendenze.
I campi che sono null in qualsiasi campione osservato diventano tipi boxed (Integer invece di int), quindi possono contenere null. Jackson quindi deserializza "age": null senza errore. Aggiungi @JsonInclude(Include.NON_NULL) per saltare i null durante la serializzazione.
Sì, se selezioni “record”. I record sono concisi, immutabili e funzionano con Jackson 2.12+. Per i progetti Spring Boot 3, record più generazione senza Lombok è la scelta moderna.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Trova nome colore
Trova il colore CSS standard con nome più vicino a un valore HEX, RGB o HSL usando la differenza CIEDE2000.
Promemoria Markdown
Riferimento pratico Markdown con anteprime reali ed esempi pronti da copiare per titoli, elenchi, tabelle, codice, link, immagini e sintassi GFM.
Strumento disponibile in altre lingue
- JSON vers classe Java [FR]
- JSON till Java-klass [SV]
- JSON เป็นคลาส Java [TH]
- JSON إلى فئة Java [AR]
- JSON ke Kelas Java [ID]
- JSON sang lớp Java [VI]
- JSON을 Java 클래스로 [KO]
- JSON zu Java-Klasse [DE]
- JSON a Clase Java [ES]
- JSON naar Java-klasse [NL]
- JSON na klasę Java [PL]
- JSON から Java クラスへ [JA]
- JSON para Classe Java [PT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]
- JSON to Java Class [EN]