Aller au contenu

Convertir JSON en JSON Schema — Numio

Déduit un JSON Schema (draft-07) à partir d’un exemple JSON. Pour les tableaux d’objets, tous les éléments sont fusionnés : une clé absente ou null dans certains éléments est exclue de required.

Créer un premier schéma de validation pour une réponse d’API ou le payload d’un webhook à partir d’exemples capturés.

JSON

JSON Schema

Quand l’utiliser

  • Créer un premier schéma de validation pour une réponse d’API ou le payload d’un webhook à partir d’exemples capturés.
  • Produire un schéma à fournir à Ajv, à OpenAPI ou à une étape JSON Schema vers TypeScript/Zod.

Mode d’emploi

  1. Collez un exemple JSON dans l’éditeur de gauche (un tableau de plusieurs enregistrements donne de meilleures listes required), ou utilisez le bouton de chargement de fichier pour ouvrir un fichier UTF-8.
  2. Lisez le schéma : dans un objet unique, toutes les clés sont obligatoires, et les clés absentes ou null dans certains éléments du tableau sont facultatives.
  3. Copiez le schéma et ajoutez les contraintes que l’exemple ne peut pas montrer, comme les formats, enums, integer et minimum.

Exemple JSON

[
  { "id": 1, "name": "Ada", "email": null },
  { "id": 2, "name": "Lin", "email": "lin@example.com" }
]

JSON Schema (draft-07)

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Generated schema for Root",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "number"
      },
      "name": {
        "type": "string"
      },
      "email": {
        "type": "string"
      }
    },
    "required": [
      "id",
      "name"
    ]
  }
}

Détails et limites

Les nombres sont toujours "type": "number" ; integer, les formats (email, date-time), les enums et les patterns ne sont pas déduits. Le title est toujours "Generated schema for Root".

Un champ null partout reçoit un schéma vide {}. Un null à côté d’autres valeurs est traité comme facultatif, et non comme le type null.

Les tableaux de types mélangés comme [1, "x"] deviennent un tuple (liste items avec additionalItems: false) ; un tableau vide donne items: {}.

Généré dans votre navigateur par json_typegen compilé en WebAssembly. Un JSON invalide (y compris avec des virgules finales) affiche l’erreur d’analyse, et une valeur simple comme 42 est rejetée car elle n’a pas de structure.

FAQ

Quel draft de JSON Schema est produit ?

Draft-07, déclaré par "$schema": "http://json-schema.org/draft-07/schema#". Il n’y a pas d’option pour choisir 2019-09 ou 2020-12.

Comment les champs facultatifs sont-ils détectés ?

Uniquement entre les éléments d’un même tableau : une clé absente de certains objets, ou null dans certains, est exclue de required. Dans un objet unique, toutes les clés sont obligatoires.

Peut-il convertir un tableau JSON à la racine ?

Oui. La racine reçoit "type": "array" et les éléments sont fusionnés en un seul schéma items, comme dans l’exemple.

Spécifications et références