Aller au contenu
4all.tools

Valider un JSON avec un schéma JSON

Vérifiez un document JSON strict avec un sous-ensemble local et limité de JSON Schema draft-07.

Espace de travail de l’outil

Valider un document JSON avec un schéma

JavaScript est nécessaire pour exécuter cet outil de validation local.

Saisissez un objet JSON utilisant le sous-ensemble pris en charge de draft-07.

0 / 100 000 unités de code UTF-16

Saisissez le document JSON à valider avec le schéma.

0 / 250 000 unités de code UTF-16

La validation est effectuée localement dans votre navigateur. Aucune entrée n’est envoyée à un serveur.

Actions de validation

Saisissez un schéma et un document JSON, puis choisissez Valider.

Mots-clés pris en charge, références et limites

À propos de ce validateur

Cet outil accepte les schémas objet JSON déclarant http://json-schema.org/draft-07/schema#. Il implémente un sous-ensemble de draft-07.

Mots-clés pris en charge

$schema, title, description, type, properties, required, items, additionalProperties, enum, const, minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength et pattern.

Mots-clés non pris en charge

Les autres mots-clés sont rejetés, notamment $ref, definitions, format, allOf, anyOf, oneOf, not, dependencies et les mots-clés conditionnels.

Les motifs suivent une grammaire restreinte : lettres et chiffres ASCII, ponctuation regex échappée, classes de caractères simples, ancres de début/fin et au plus un quantificateur ? ou {min,max} (max. 32).

Les schémas ne sont jamais téléchargés. Les références distantes comme $ref ne sont pas suivies et ne sont pas prises en charge.

Limites de ressources

Schéma : 100 000 unités de code UTF-16 ; profondeur du parseur 60, 5 000 nœuds, 1 000 000 unités de travail du parseur et 100 diagnostics. Le préflight autorise 5 000 visites structurelles, une profondeur de 40, 5 000 noms, 50 motifs de 128 unités maximum chacun et 100 membres enum.

Document : 250 000 unités de code UTF-16 ; profondeur du parseur 100, 25 000 nœuds, 1 000 000 unités de travail du parseur et 100 diagnostics. Une chaîne vérifiée par pattern est limitée à 10 000 unités de code.

La validation complète dispose de 5 000 000 unités de travail, 8 192 unités de code variables par diagnostic et 8 secondes. L’interface ne permet pas d’augmenter ces limites.

Valider un document avec un schéma

Saisissez un objet JSON Schema dans Schéma JSON et la valeur JSON à vérifier dans Document JSON, puis choisissez Valider. Les deux entrées sont d’abord analysées comme du JSON strict, le schéma entier est vérifié, puis le document est évalué. La première erreur est affichée ; cette première version ne répertorie pas toutes les incompatibilités. Un résultat positif signifie que le document est valide pour le sous-ensemble pris en charge par cet outil, et non pour toutes les fonctionnalités de draft-07.

Choisissez Charger un exemple pour remplir les deux éditeurs avec cette paire valide. Vous pouvez la modifier ; la validation ne démarre qu’après avoir choisi Valider.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "active": { "type": "boolean" }
  },
  "required": ["name"],
  "additionalProperties": false
}
{
  "name": "Ada",
  "active": true
}

Sous-ensemble de draft-07 pris en charge

Le schéma racine doit être un objet JSON et déclarer la valeur exacte http://json-schema.org/draft-07/schema# dans $schema. Les mots-clés et formes suivants sont pris en charge :

  • $schema, title et description avec des valeurs textuelles.
  • type comme un type ou une liste non vide et sans doublons : null, boolean, object, array, number, integer ou string.
  • properties comme objet dont les valeurs sont des schémas ; required comme tableau de noms de propriétés uniques ; et additionalProperties comme booléen ou schéma.
  • items comme un schéma. Les tableaux de schémas pour items ne sont pas pris en charge.
  • enum comme tableau non vide de 100 valeurs JSON maximum et const comme toute valeur JSON.
  • minimum, maximum, exclusiveMinimum et exclusiveMaximum comme nombres finis.
  • minLength et maxLength comme entiers non négatifs. La longueur du texte est comptée en points de code Unicode.
  • pattern comme texte respectant la grammaire restreinte décrite ci-dessous.

properties décrit comment vérifier une propriété lorsqu’elle existe ; cela ne la rend pas obligatoire. Seuls les noms indiqués dans required doivent être présents. Une propriété absente et une propriété dont la valeur est null sont différentes : required vérifie la présence et type vérifie la valeur. additionalProperties accepte, rejette ou vérifie les autres propriétés ; le mot-clé ne les supprime ni ne les réécrit dans le document.

Mots-clés et motifs rejetés

Tout mot-clé qui ne figure pas dans la liste ci-dessus est rejeté avant la validation du document. Cela inclut $ref, même lorsqu’il pointe vers une définition locale, ainsi que definitions, format, allOf, anyOf, oneOf, not, dependencies et les mots-clés conditionnels if, then et else. Les références ne sont pas résolues, et l’outil ne télécharge jamais de schéma ni n’interroge de service distant.

Les motifs se limitent aux lettres et chiffres ASCII, à la ponctuation regex échappée, aux classes de caractères simples et à ^ ou $ uniquement au début ou à la fin. Chaque motif accepte au plus un quantificateur ? ou un quantificateur borné {min,max}, dont le maximum est 32. Les autres fonctionnalités des expressions régulières sont rejetées. Un motif peut contenir jusqu’à 128 unités de code, et une chaîne du document vérifiée par un motif jusqu’à 10 000 unités.

JSON strict et précision numérique

Les deux éditeurs exigent du JSON strict. Les commentaires, virgules finales, clés d’objet en double et contenu supplémentaire sont des erreurs. Les nombres qui ne peuvent pas être représentés de manière sûre en nombres JavaScript sont rejetés et ne donnent aucun résultat de conformité. La validation porte sur la valeur JSON analysée ; il est impossible de distinguer les écritures numériques une fois la précision perdue.

Limites d’entrée et d’opération

L’éditeur de schéma accepte jusqu’à 100 000 unités de code UTF-16. L’analyse du schéma est limitée à une profondeur de 60, 5 000 nœuds JSON, 1 000 000 unités de travail d’analyse et 100 diagnostics. Le préflight autorise 5 000 visites structurelles, une profondeur de schéma de 40, 5 000 noms dans properties et required, 50 motifs de 128 unités maximum chacun et 100 valeurs par enum.

L’éditeur de document accepte jusqu’à 250 000 unités de code UTF-16. Son analyse est limitée à une profondeur de 100, 25 000 nœuds JSON, 1 000 000 unités de travail d’analyse et 100 diagnostics. Les chaînes vérifiées par pattern sont limitées à 10 000 unités de code. La validation complète dispose de 5 000 000 unités de travail, 8 192 unités de code variables par diagnostic et 8 secondes. Une limite atteinte interrompt la validation sans déclarer le document valide ou non conforme.

Traitement local

L’analyse et la validation s’exécutent dans un Worker local de votre navigateur. Aucune entrée n’est envoyée au serveur de l’application et aucun schéma n’est téléchargé. Le texte n’est stocké ni dans l’URL, ni dans les cookies, ni dans le stockage du navigateur. Modifier une entrée efface l’ancien résultat et arrête le travail lié à l’ancien texte. Annuler arrête une opération en cours et conserve les deux entrées ; Tout effacer les supprime explicitement.