JSON vers classe Java
Collez un exemple de JSON et le générateur émet une ou plusieurs classes Java avec les bons types de champs, getters, setters et annotations de bibliothèque JSON. Supporte Jackson (@JsonProperty), Gson (@SerializedName), et Lombok (@Data/@Builder) pour un code plus propre. Les objets imbriqués deviennent des classes internes ou des classes sœurs, selon la mise en page que vous choisissez.
Comment convertir JSON en Java
-
1
Collez le JSON
Un seul exemple suffit ; plusieurs exemples améliorent la détection de nullabilité.
-
2
Choisissez la bibliothèque
Jackson (le plus courant dans Spring), Gson (Android et certains projets hérités), ou POJO simple sans annotations.
-
3
Choisissez des options supplémentaires
Lombok pour les getters/setters générés automatiquement, le modèle de constructeur, equals/hashCode. Ou laissez-le simple.
-
4
Choisissez le style imbriqué
Classes sœurs dans le même fichier (les classes publiques Java 17+ doivent être dans des fichiers séparés) ou classes statiques imbriquées.
-
5
Copiez le code
Intégrez-le dans votre projet. Les noms de classe correspondent aux clés JSON ; le package est défini selon votre configuration.
Exemple de sortie : Jackson + Lombok
Entrée :
{ "firstName": "Alice", "age": 30, "address": { "city": "Madrid" } }
Sortie :
@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;
}
Mappage des types
| JSON | Type Java |
|---|---|
| chaîne | String |
| entier (<= Integer.MAX) | Integer / int |
| grand entier | Long / BigInteger |
| décimal | Double / BigDecimal |
| booléen | Boolean / boolean |
| date ISO | LocalDate (Jackson JSR-310) |
| date/heure ISO | Instant / OffsetDateTime |
| null (avec un champ voisin non nul) | Type enveloppant (ex. Integer) |
| tableau | List<T> |
| objet | Classe imbriquée |
Choisir entre types enveloppants et primitifs
- Primitif (
int,long,boolean), non nul, efficace, pas d’auto-boxing. - Enveloppé (
Integer,Long,Boolean), nullable, requis si le champ peut être absent ou nul dans JSON.
Le générateur par défaut utilise des types enveloppants pour tout ce qui est considéré comme nullable, sinon il utilise des primitifs.
Jackson vs Gson
| Fonctionnalité | Jackson | Gson |
|---|---|---|
| Ubiquité dans Spring | Oui, par défaut | Non (configuration nécessaire) |
| Performance | Plus rapide | Plus lent |
| Support des dates JSR-310 | Via module supplémentaire | Via module supplémentaire |
| Polymorphisme | @JsonTypeInfo |
RuntimeTypeAdapter |
| Tolérance aux virgules finales | Non (par défaut) | Oui |
Erreurs courantes
- Utiliser des types primitifs pour des champs nullable.
intne peut pas être nul ; Jackson lancera une exception si le JSON contient"age": null. UtilisezInteger. - Modules de date manquants. Jackson a besoin de
jackson-datatype-jsr310pourInstant/LocalDate. Sans cela, les dates retombent surStringou des longs au format epoch. - Partage de types enveloppants entre des classes non liées. Si deux formes JSON ont toutes deux une
Addressimbriquée, le générateur crée deux classesAddress. Renommez ou unifiez manuellement. - Oublier
@JsonIgnoreProperties(ignoreUnknown = true). Jackson strict lance une exception sur les propriétés inconnues ; ajoutez cette annotation (ou configurez-la globalement) pour une désérialisation tolérante.
Questions fréquentes
Jackson dans la plupart des cas, c’est le défaut de Spring, plus rapide, et a un support polymorphe plus riche. Gson est plus léger et mieux connu dans Android, bien que les projets Android utilisent de plus en plus Moshi ou kotlinx.serialization.
Lombok réduit beaucoup de code répétitif (getters, setters, equals, hashCode, builder). Il est largement utilisé mais nécessite le processeur d’annotation Lombok dans votre build. Désactivez-le si votre projet évite Lombok pour des raisons d’hygiène des dépendances.
Les champs qui sont nuls dans tout exemple observé deviennent des types enveloppants (Integer au lieu de int), afin qu’ils puissent contenir null. Jackson désérialise alors "age": null sans erreur. Ajoutez @JsonInclude(Include.NON_NULL) pour ignorer les nuls lors de la sérialisation.
Oui, si vous sélectionnez “enregistrement”. Les enregistrements sont concis, immuables et fonctionnent avec Jackson 2.12+. Pour les projets Spring Boot 3, les enregistrements plus la génération sans Lombok sont le choix moderne.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Recherche de nom de couleur
Trouvez la couleur nommée CSS standardisée la plus proche d’une valeur HEX, RGB ou HSL grâce à l’écart CIEDE2000.
Outil disponible dans d’autres langues
- JSON ke Kelas Java [ID]
- JSON sang lớp Java [VI]
- JSON a Clase Java [ES]
- JSON을 Java 클래스로 [KO]
- JSON naar Java-klasse [NL]
- JSON till Java-klass [SV]
- 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]