Générateur de schéma JSON

Collez du JSON à gauche — le schéma apparaît à droite, au fil de la frappe.

Schéma JSON

Mode d’emploi

  1. Collez un document JSON d’exemple à gauche — objet, tableau ou valeur unique. Le schéma est généré en direct, au fil de la frappe.
  2. Choisissez la version du schéma (Draft 7 ou 2020-12), puis activez ou non la détection des formats de chaîne, les valeurs d’exemple et le caractère obligatoire de chaque propriété.
  3. Copiez ou téléchargez le résultat sous le nom schema.json. Rien n’est envoyé : tout le document est analysé dans votre navigateur.

Exemple

JSON d’exemple

{
  "id": 42,
  "nom": "Ada Lovelace",
  "email": "ada@example.com",
  "actif": true,
  "roles": ["admin", "editeur"],
  "profil": { "score": 4.5, "verifie": false }
}

Schéma JSON

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "nom": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "actif": { "type": "boolean" },
    "roles": { "type": "array", "items": { "type": "string" } },
    "profil": {
      "type": "object",
      "properties": {
        "score": { "type": "number" },
        "verifie": { "type": "boolean" }
      },
      "required": ["score", "verifie"],
      "additionalProperties": false
    }
  },
  "required": ["id", "nom", "email", "actif", "roles", "profil"],
  "additionalProperties": false
}

Généré avec les règles par défaut : Draft 7, formats activés, toutes les propriétés obligatoires. La chaîne e-mail reçoit une indication de format ; l’entier reste exact, et le profil imbriqué devient son propre schéma d’objet.

Règles, limites et problèmes connus

  • Les types sont déduits de l’exemple : objet, tableau, chaîne, entier, nombre, booléen, null. Les éléments de tableau sont fusionnés — les objets des différents éléments réunissent leurs clés, et une clé absente de certains éléments n’est pas marquée comme obligatoire.
  • Des types mixtes dans un même tableau deviennent un anyOf ; un tableau vide donne type:array sans items (le type des éléments est inconnu d’après l’exemple).
  • Les formats de chaîne (e-mail, UUID, URI, date, date-time) sont devinés à partir de la valeur — ce sont des indications, pas une validation de toutes les valeurs possibles. Désactivez-les avec l’interrupteur.
  • Les clés en double conservent la dernière valeur, comme JSON.parse. JSON strict uniquement (RFC 8259) : les commentaires, virgules finales et guillemets simples sont refusés avec un message indiquant la ligne et la colonne.
  • Le schéma est du JSON standard : ses mots-clés et sa sortie ne changent donc jamais avec la langue de la page. Les valeurs d’exemple sont reconstruites nativement, si bien qu’un entier extrême (par exemple 12345678901234567890) peut être arrondi dans l’exemple uniquement.
  • Limites : 1 000 000 de caractères et 512 niveaux d’imbrication. Au-delà de l’une ou l’autre, vous obtenez une erreur, jamais un résultat tronqué. L’import de fichier lit uniquement le fichier local — rien n’est envoyé.

Ce dont on a généralement besoin ensuite, une fois le schéma obtenu.