Aller au contenu

Convertir JSON en classes Java

Génère des classes Java à partir de JSON : la page exécute json_typegen (WebAssembly) en mode Kotlin et réécrit chaque data class en classe Java avec des champs privés, un constructeur prenant tous les arguments, des getters et des setters.

Créer un POJO pour désérialiser une réponse REST avec Jackson.

JSON

Quand l’utiliser

  • Créer un POJO pour désérialiser une réponse REST avec Jackson.
  • Esquisser des classes DTO pour un contrôleur Spring à partir d’un payload d’exemple.

Mode d’emploi

  1. Collez un objet ou un tableau JSON dans l’éditeur de gauche.
  2. Lisez les classes : la racine est Root et les objets imbriqués deviennent des classes séparées nommées d’après leur clé.
  3. Copiez-les dans des fichiers .java séparés (les imports de List et de Jackson sont inclus) et ajustez les types si nécessaire.

JSON

{
  "id": 42,
  "user_name": "ada",
  "active": true,
  "tags": ["admin", "editor"]
}

Classes Java

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Root {
	private Long id;
	@JsonProperty("user_name")
	private String userName;
	private Boolean active;
	private List<String> tags;

	public Root(Long id, String userName, Boolean active, List<String> tags) {
		this.id = id;
		this.userName = userName;
		this.active = active;
		this.tags = tags;
	}

	public Long getId() {
		return this.id;
	}

…

Détails et limites

La génération s’exécute dans le navigateur avec WebAssembly ; il n’y a pas de paramètres.

Les clés en snake_case deviennent des champs camelCase avec l’annotation Jackson @JsonProperty ; l’import Jackson et java.util.List sont ajoutés lorsqu’ils sont utilisés.

Les nombres correspondent à Long ou Double et les booléens à Boolean ; les getters booléens utilisent get, pas is.

Une valeur null est typée Object, et un tableau de nulls List<?>. Remplacez-les par des types concrets une fois les données réelles connues.

FAQ

Puis-je convertir un tableau JSON à la racine ?

Oui. La racine devient une classe enveloppe Root avec un champ List<Root2>, et les éléments du tableau deviennent la classe Root2.

Les champs optionnels sont-ils gérés ?

Les clés absentes de certains éléments du tableau sont détectées, mais la sortie Java supprime l’indication d’optionnalité : chaque champ est un simple type enveloppe nullable.

Génère-t-il des annotations Lombok ou des records ?

Non. Il écrit des classes simples avec des constructeurs, getters et setters explicites.

Comment les valeurs null sont-elles typées ?

Un champ null dans l’échantillon devient Object (private Object note;), car aucun type concret ne peut être déduit. Fournissez un échantillon avec une vraie valeur pour obtenir String, Long ou une classe imbriquée.

Spécifications et références