Ce que fait cet outil
Un échantillon JSON devient un JSON Schema en draft 2020-12.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"address": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
},
"required": ["id", "name", "address"]
}
Les objets imbriqués sont écrits sur place. Pas de section $defs, pas de $ref : pour un échantillon, un schéma en ligne est celui qui se lit de haut en bas.
Deux réglages, parce que les deux réponses se défendent
- Clés requises. Actif par défaut : chaque clé de l’échantillon est listée. Inactif : aucun tableau
required, et un document auquel il manque une clé valide quand même. additionalProperties. Permissif par défaut — une clé en trop passe. En strict,"additionalProperties": falseest ajouté à chaque objet et une clé inattendue devient une erreur.
Aucun de ces choix ne se lit dans un échantillon. Ce sont des affirmations sur votre API : elles vous reviennent, plutôt que d’être devinées ici.
integer et number viennent du littéral
3 donne integer ; 3.0 et 1e3 donnent number. JSON n’a qu’un type numérique : la façon dont un nombre est écrit est la seule trace de ce qui l’a produit. Un schéma appelant 10.0 un entier refuse 10.5, très probablement l’enregistrement suivant — c’est exactement ce que faisait cet outil jusqu’à ce que le défaut soit trouvé et corrigé en écrivant ces pages.
Ce que l’échantillon ne décrit pas
"n": nulldonne{"type": "null"}, un schéma qui n’accepte rien d’autre. Si le champ est une chaîne nullable, la retouche est{"type": ["string", "null"]}.- Un tableau vide donne
{"type": "array"}sansitems: rien n’est affirmé sur des éléments jamais vus. - Un tableau hétérogène donne
anyOf, listant exactement les formes présentes. - Ni
format, niminLength, nipattern. Un courriel, un UUID et une phrase sont tous"type": "string"ici. Ajouter"format": "email"serait deviner un sens, pas lire une structure — et c’est la première chose à ajouter à la main quand vous connaissez le champ.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.