Générateur JSON vers JSON Schema
Collez un échantillon JSON, obtenez un JSON Schema (Draft 2020-12 ou Draft 7) avec détection automatique des formats et liste des champs requis.
Qu'est-ce que JSON Schema ?
JSON Schema est un vocabulaire pour décrire du JSON. Il dit « cet objet doit avoir ces clés, de ces types, avec des valeurs respectant ces motifs » — et les validateurs (Ajv, jsonschema, opis/json-schema, tous les outils OpenAPI) font respecter ce contrat. Le standard actuel est Draft 2020-12, qui est ce qu'utilise OpenAPI 3.1 ; Draft 7 est la version précédente, encore courante dans les anciennes chaînes d'outils. Les deux ont des différences syntaxiques mineures — ce générateur produit les deux.
Comment l'utiliser
Collez un échantillon JSON. La zone de sortie produit un schéma correspondant avec chaque feuille typée en string, integer, number, boolean, null, plus object / array pour les conteneurs. Avec Détecter les formats activé, les chaînes correspondant à des motifs courants reçoivent un indice format — email, uri, date, date-time, uuid, ipv4. Avec Marquer les requis activé, chaque clé présente dans l'échantillon est ajoutée à required — déposez un tableau de plusieurs objets pour obtenir une liste honnête de champs requis (seules les clés présentes dans tous les objets survivent). Les champs optionnels Title et $id sont ajoutés en haut du schéma.
Formats détectés
email— tout ce qui correspond au motif simplelocal@host.tld.uri— chaînes commençant parhttp://ouhttps://.date—AAAA-MM-JJ(RFC 3339 full-date).date-time—AAAA-MM-JJTHH:MM:SS[.fff][Z|+HH:MM](RFC 3339).time—HH:MM:SS[.fff][Z|+HH:MM].uuid— UUID RFC 4122 v1–v5.ipv4— adresses IPv4 en notation décimale pointée.
uri-reference, idn-email, regex, json-pointer) ne sont pas auto-détectés ; ajoutez-les à la main si nécessaire.
Questions fréquentes
Puis-je faire confiance à un schéma inféré en production ?
Comment choisit-il les champs requis ?
Quelle différence entre Draft 2020-12 et Draft 7 ?
$dynamicRef remplace $recursiveRef, items remplace additionalItems pour la validation de tuples, et quelques mots-clés ont changé de vocabulaire. Si vous intégrez avec OpenAPI 3.1 ou Ajv 8+, choisissez 2020-12 ; pour un Ajv plus ancien (v6), un Stoplight ancien ou tout ce qui est antérieur à 2019, choisissez Draft 7.Pourquoi ma date est-elle détectée comme date-time et non date ?
date-time avant date, donc 2024-01-15T00:00:00Z matche date-time en premier. 2024-01-15 seul matche date. Si vous voulez un champ date sans heure mais qui contient l'heure, éditez le schéma à la main ou retirez la composante horaire de votre échantillon.Le schéma préserve-t-il les champs de type énumération ?
enum: [...] à la main une fois votre domaine vérifié.Puis-je utiliser le résultat avec OpenAPI ?
$schema et $id) dans une entrée components.schemas.MyType. OpenAPI 3.1 supporte tout le vocabulaire Draft 2020-12 ; OpenAPI 3.0 supporte un sous-ensemble proche de Draft 7 mais avec quelques particularités (pas de mot-clé nullable en Draft 7 — OpenAPI 3.0 a ajouté le sien).