Aller au contenu principal

Valider du JSON

Le validateur JSON effectue une validation syntaxique stricte RFC 8259 directement dans votre navigateur, sans transmettre votre charge utile sur le réseau. Il localise la ligne et la colonne précises des erreurs de syntaxe avec un pointeur curseur visuel, un diagnostic en langage clair, et une classification spécifique des virgules finales, des guillemets simples, des clés non quotées, des crochets mal appariés, des BOM et des guillemets typographiques de traitement de texte.

100 % local
En attente de saisie — collez un document JSON ou cliquez sur « Charger un exemple »
Document JSON à valider
0 B1 ligneLig. 1, Col. 1

Comment fonctionne Valider du JSON ?

Les implémentations standard de JSON.parse() des navigateurs remontent des messages d’erreur notoirement inutiles, tels que "Unexpected token in JSON at position 4812" . Cette exception brute oblige les développeurs à compter manuellement les décalages d’octets et à deviner quel guillemet, quelle virgule ou quel crochet est mal placé.

Le validateur de ToolsByUs implémente un scanner lexical non récursif dédié et un validateur de jetons qui suivent les numéros de ligne, les positions de colonne, les piles d’imbrication des délimiteurs et les anticipations de caractères, selon la RFC 8259 :

  • Aucune exception brute : les exceptions sont interceptées et traduites en rapports de diagnostic actionnables, avec des extraits de curseur exacts pointant le caractère fautif sur la ligne et la colonne précises.
  • Classification explicite des erreurs : identifie avec précision les virgules finales, les clés d’objet non quotées, les délimiteurs à guillemet simple, les virgules de séparation manquantes et les crochets mal appariés (fermer un tableau avec une accolade, par exemple).
  • Détection des guillemets typographiques et des BOM : repère les subtiles marques d’ordre des octets UTF-8 invisibles (0xFEFF) et les guillemets courbes ( “, ” ) fréquemment introduits en copiant du JSON depuis des éditeurs de texte enrichi ou des traitements de texte.
  • Grammaire stricte des nombres : rejette les nombres IEEE 754 non finis comme NaN, Infinity, et les zéros non significatifs en tête de nombre (comme 012 ) qui violent la section 6 de la RFC 8259.
  • Protection jusqu’à 10 000 de profondeur : emploie une machine à états finis itérative qui valide les structures profondément imbriquées sans rencontrer de débordement de la pile d’appels du navigateur.

L’analyseur fonctionne en maintenant une machine à états qui transite entre les états BEFORE_KEY, AFTER_KEY, COLON, BEFORE_VALUE et AFTER_VALUE, tout en vérifiant que les crochets structurels ouvrants ( [ et { ) correspondent à leurs contreparties fermantes exactes dans l’ordre dernier entré, premier sorti.

Exemple d’entrée malformée

{
  'service': "auth",
  "active": true,
}

Exemple de sortie

Line 2, Column 3:
  'service': "auth",
  ^
Error: Single quotes are not allowed in JSON. Use double quotes (").
Recommendation: Replace single quotes with double quotes.

Quelles options et quels cas limites Valider du JSON prend en charge ?

Référence technique et options
ParamètreTypeValeur par défautComportement et cas limites
TRAILING_COMMAErreur de syntaxeInterditVirgule finale précédant } ou ]. Bien que valide en JavaScript/JSON5, cela enfreint la section 4 de la RFC 8259.
SINGLE_QUOTESErreur de syntaxeInterditGuillemets simples (') entourant les chaînes de caractères ou les clés de propriété. JSON exige des guillemets doubles ASCII standards (").
UNQUOTED_KEYErreur de syntaxeInterditIdentifiants de propriété d’objet sans guillemets doubles (par exemple, { name: 'value' }).
MISSING_COMMAErreur de syntaxeInterditPaires clé-valeur d’objet consécutives ou membres de tableau sans délimiteur de virgule intermédiaire.
MISMATCHED_BRACKETErreur de structureInterditDélimiteurs de conteneurs non appariés, comme la fermeture d’un tableau par une accolade ( ] vs } ).
SMART_QUOTESErreur d'encodageDétectéGuillemets typographiques de traitement de texte (« »). Diagnostic automatique avec l’emplacement de la colonne et la correction.
BOM (Byte Order Mark)Erreur d'encodage0xFEFFMarque d’ordre d’octets UTF-8 en tête de fichier, interdite par la section 8.1 de la RFC 8259 dans les échanges réseau.
NAN_INFINITY_REJECTEDGrammaire numériqueInterditNaN, Infinity et -Infinity ne sont pas des jetons numériques JSON valides selon la section 6 de la RFC 8259.

Questions fréquentes

Pourquoi une syntaxe d’objet JavaScript valide échoue-t-elle à la validation JSON ?

JSON (RFC 8259) est un format d’échange, pas un langage de programmation. Des fonctionnalités permises en JavaScript—telles que les virgules finales, les chaînes à guillemets simples, les clés de propriété non quotées, les commentaires, et les valeurs NaN—sont explicitement interdites par le standard JSON afin de garantir l’interopérabilité entre les analyseurs Python, Go, Java, C++ et Rust.

Qu’indique le pointeur curseur ?

Le curseur (^) pointe directement la colonne du caractère où l’analyseur lexical a rencontré un caractère inattendu ou une séquence illégale, ce qui aide à localiser la rupture de syntaxe exacte même dans des charges utiles de plusieurs mégaoctets.

Comment le validateur détecte-t-il les guillemets typographiques ?

Quand du texte est copié depuis des outils de documentation, des articles de blog ou des clients de messagerie, les guillemets doubles ASCII (") sont fréquemment convertis en guillemets courbes typographiques (Unicode U+201C et U+201D). Le validateur détecte explicitement ces points de code Unicode et conseille de les remplacer par des guillemets doubles standard.

Pourquoi le JSON rejette-t-il les commentaires ?

Douglas Crockford a volontairement retiré les commentaires de la spécification JSON d’origine pour empêcher les analyseurs de contenir des directives de traitement ou des pragmas, faisant en sorte que JSON reste purement un format d’échange de données. Pour les fichiers de configuration acceptant les commentaires, utilisez JSONC.

Comment les clés dupliquées sont-elles gérées selon la RFC 8259 ?

La RFC 8259 précise que les clés d’objet doivent être uniques. Alors que certains analyseurs natifs écrasent silencieusement les premières valeurs par les suivantes, ToolsByUs signale les clés dupliquées avec des avertissements de diagnostic pour prévenir les bugs subtils de perte de données.

Ma charge utile validée est-elle envoyée à un backend ?

Non. L’analyse, la vérification des jetons et la validation se produisent 100% côté client, dans votre navigateur. Aucune donnée ne quitte jamais votre ordinateur, garanti par notre architecture sans backend.