Comment corriger les erreurs JSON : causes courantes et solutions
Apprenez à diagnostiquer et corriger les erreurs de syntaxe JSON, comprendre les messages des analyseurs, éviter les pièges fréquents et respecter la norme RFC 8259.
Lorsqu'un analyseur JSON renvoie une erreur telle que SyntaxError: Unexpected token in JSON at position 142 ou json.decoder.JSONDecodeError, le traitement s'arrête net. Les requêtes d'API sont rejetées, les tâches d'arrière-plan échouent et les fichiers de configuration deviennent illisibles pour le système. Pour corriger un JSON invalide, il faut localiser précisément le caractère sur lequel l'analyse a buté et aligner le document sur les exigences strictes de la spécification RFC 8259.
Dans la grande majorité des cas, une charge utile JSON invalide découle de quelques fautes récurrentes : une virgule finale en trop, des apostrophes au lieu de guillemets doubles, des clés non entourées de guillemets, des barres obliques inverses mal échappées ou des accolades mal fermées.
Vous pouvez tester et inspecter n'importe quelle structure immédiatement avec le validateur JSON de ToolPorta pour repérer les anomalies directement dans votre navigateur. Ce guide détaille les raisons pour lesquelles les analyseurs refusent un document, propose une méthode de diagnostic en quatre étapes, présente les solutions concrètes pour chaque erreur de syntaxe courante, compare le JSON standard aux formats plus souples comme JSON5, et rappelle les bonnes pratiques de sécurité.
Qu'est-ce qui rend un JSON invalide ?#
Le format JSON (JavaScript Object Notation) n'est pas du code JavaScript exécutable. Bien qu'il tire son origine de la notation des objets littéraux de JavaScript, il constitue un format d'échange de données autonome, standardisé au niveau international par les normes RFC 8259 et ECMA-404.
Les analyseurs syntaxiques (ou parsers) JSON fonctionnent comme des automates à états finis stricts. Ils ne tentent pas d'extrapoler l'intention de l'auteur et n'appliquent aucune correction automatique par défaut. Une virgule mal placée ou une apostrophe suffit à bloquer la machine d'état, déclenchant immédiatement une exception d'analyse.
Selon la spécification officielle, un document JSON valide contient une valeur racine unique appartenant à l'un des six types fondamentaux :
- Objet : Une collection non ordonnée de paires clé-valeur séparées par des virgules et délimitées par des accolades (
{}). Chaque clé doit impérativement être une chaîne entourée de guillemets doubles ("). - Tableau : Une liste ordonnée de valeurs séparées par des virgules et encadrées de crochets (
[]). - Chaîne de caractères : Une suite de caractères Unicode encadrée exclusivement de guillemets doubles (
"). Les caractères de contrôle et les barres obliques inverses doivent être échappés. - Nombre : Un nombre décimal sans zéro initial (sauf pour le chiffre 0 lui-même), sans notation octale et sans point décimal orphelin.
- Booléen : Les constantes en minuscules
trueoufalse. - Null : La valeur littérale en minuscules
null.
Toute construction extérieure à cette liste — comme undefined, NaN, Infinity, des fonctions, des apostrophes simples, des commentaires ou des virgules en fin de liste — rend le JSON strictement invalide.
Comment diagnostiquer et corriger un JSON étape par étape#
Pour résoudre une erreur d'analyse sans perdre de temps, appliquez cette démarche en quatre étapes :
- Examinez le message d'erreur et la position du curseur : Les analyseurs signalent généralement un décalage de caractère (ex.
position 487) ou un couple ligne/colonne. Si vous disposez uniquement d'une position absolue, divisez-la par la longueur moyenne des lignes ou ouvrez le texte dans un éditeur capable d'afficher le décalage de position. - Vérifiez la ligne située juste avant l'erreur signalée : L'analyseur s'arrête souvent sur la ligne suivante. Par exemple, si vous oubliez une virgule à la fin de la ligne 12, le parseur ne s'en aperçoit qu'en lisant le premier caractère de la ligne 13.
- Isolez la syntaxe dans un outil de validation dédié : Collez le document dans le validateur JSON. L'outil exécute une analyse côté client avec mise en valeur contextuelle, vous indiquant le jeton inattendu et les délimiteurs manquants.
- Formatez et vérifiez la structure corrigée : Dès que l'analyse aboutit, passez les données dans le formateur JSON pour inspecter l'alignement des blocs, l'arborescence et l'équilibre des crochets.
Exemple concret de diagnostic#
Voici un extrait de configuration d'API exporté d'un environnement de test. Transmis à un serveur d'application, il produit une erreur SyntaxError: Expected double-quoted property name at line 5 column 3 :
Cet extrait cumule quatre anomalies de syntaxe :
- Ligne 2 : Utilisation d'apostrophes simples autour de
'service'. - Ligne 7 : Virgule finale inutile après le dernier élément du tableau.
- Ligne 9 : Clé d'objet sans guillemets (
logLevel). - Ligne 10 : Barres obliques inverses non échappées dans un chemin de fichier Windows (
C:\data\logs).
Voici le document corrigé, parfaitement conforme à la norme :
Erreurs courantes et comment les résoudre#
La quasi-totalité des rejets d'analyse provient de quelques entorses répétitives aux règles RFC 8259. Les reconnaître permet de résoudre le problème en quelques secondes.
1. Virgules finales orphelines dans les objets et tableaux#
En JavaScript, en Python ou dans les standards récents d'ECMAScript, la virgule finale (trailing comma) est autorisée. En JSON standard, la virgule est un séparateur strict reliant deux éléments consécutifs, et non un terminateur d'instruction. Placer une virgule après la dernière propriété ou le dernier élément d'un tableau provoque une erreur immédiate.
2. Utilisation d'apostrophes au lieu de guillemets doubles#
Dans de nombreux langages de programmation, les apostrophes (') et les guillemets doubles (") sont interchangeables pour délimiter les chaînes. En JSON standard, l'apostrophe est strictement proscrite, aussi bien pour les clés que pour les valeurs textuelles.
Si votre texte contient des guillemets doubles, échappez-les avec une barre oblique inverse (\") :
3. Clés d'objet sans guillemets#
Les littéraux d'objets en JavaScript acceptent des identifiants non entourés de guillemets (comme { name: "Alice" }). En JSON, chaque clé de propriété doit être impérativement enveloppée dans des guillemets doubles.
4. Barres obliques inverses et chemins de fichiers non échappés#
La barre oblique inverse (\) sert de préfixe d'échappement en JSON. Lorsque vous représentez des chemins Windows, des expressions régulières ou des chemins réseau, une barre oblique isolée déclenche une erreur de séquence d'échappement invalide ou altère le caractère suivant.
Les seules séquences d'échappement reconnues par la norme JSON sont \", \\, \/, \b, \f, \n, \r, \t, et les séquences hexadécimales Unicode sous la forme \u00A9. Tout autre caractère précédé d'un antislash simple est illégal.
5. Commentaires dans le JSON#
Les développeurs ont souvent le réflexe d'annoter leurs configurations avec // ou /* */. La norme RFC 8259 interdit formellement les commentaires afin de préserver l'interopérabilité universelle des analyseurs et d'éviter les dialectes divergents.
6. Types non pris en charge : NaN, Infinity et undefined#
Le standard JSON ne prévoit aucune représentation pour les nombres non finis ni pour le type undefined. Lors d'une sérialisation JavaScript avec JSON.stringify(), les propriétés valant undefined sont omises et les valeurs NaN ou Infinity sont automatiquement converties en null.
7. L'erreur « Unexpected token < in JSON at position 0 »#
Cette erreur fréquente survient lorsque le code client s'attend à recevoir du JSON, mais que le serveur lui transmet une page HTML ou un flux XML.
Le symbole < correspond au premier caractère d'une balise HTML comme <!DOCTYPE html> ou <html>. Cette anomalie se produit généralement quand :
- L'API appelée renvoie une page d'erreur 404 (Route introuvable) ou 500 (Erreur interne de serveur).
- Un proxy, un pare-feu ou un portail captif intercepte la requête et affiche une mire de connexion.
- L'URL de la requête est mal configurée ou pointe vers une mauvaise passerelle.
Avant de chercher une erreur de syntaxe dans votre code, affichez le code de statut HTTP brut et le corps de la réponse textuelle pour constater ce que le serveur a réellement transmis.
Comparatif : JSON standard vs JSON5 vs Objets JavaScript#
Une grande partie des erreurs provient de la confusion entre le JSON standard et des syntaxes plus permissives comme JSON5 ou la déclaration d'objets en JavaScript :
| Fonctionnalité | JSON Standard (RFC 8259) | JSON5 | Objet Littéral JavaScript |
|---|---|---|---|
| Délimitation des clés | Guillemets doubles obligatoires ("clé") | Optionnels pour les identifiants valides | Optionnels pour les identifiants valides |
| Délimitation des chaînes | Guillemets doubles uniquement ("...") | Guillemets simples ou doubles | Guillemets simples, doubles ou accents graves |
| Virgule finale | Interdite dans objets et tableaux | Autorisée | Autorisée |
| Commentaires | Interdits | Ligne (//) et bloc (/* */) | Ligne (//) et bloc (/* */) |
| Sauts de ligne échappés | Interdits dans les chaînes | Autorisés | Autorisés |
| Nombres hexadécimaux | Interdits (0xFF invalide) | Autorisés (0x10, 0xFF) | Autorisés |
| Décimales initiales/finales | Interdites (.5 ou 5. invalide) | Autorisées | Autorisées |
| Valeurs numériques spéciales | Interdites (NaN, Infinity) | Autorisées (NaN, Infinity) | Autorisées |
| Support natif du navigateur | JSON.parse() natif | Nécessite une bibliothèque | Évalué par le moteur JavaScript |
Si le JSON5 est pratique pour les outils de configuration locale (comme tsconfig.json), le JSON standard reste le standard absolu des API REST, des webhooks et de la communication inter-services.
Quel outil choisir : validateur, formateur ou validation par code ?#
Chaque étape du cycle de développement fait appel à un outil adapté :
| Besoin | Outil recommandé | Rôle principal |
|---|---|---|
| Détecter un blocage syntaxique ou trouver une erreur | Validateur JSON | Localise la ligne, la colonne et le jeton responsable |
| Examiner la hiérarchie d'un document complexe | Formateur JSON | Applique une indentation claire et équilibrée |
| Optimiser la taille d'une charge utile validée | Minificateur JSON | Supprime les espaces inutiles pour le transit réseau |
| Valider les données d'entrée dans une application | Analyseur natif du langage | Bloque les données invalides en production et en tests |
Si vous souhaitez intégrer la validation JSON dans vos applications de manière automatisée, consultez nos guides pour développeurs :
- Valider du JSON en JavaScript et Node.js avec
try...catchet l'analyseur natifJSON.parse(). - Valider du JSON en Python avec le module standard
jsonet la fonctionjson.loads().
Sécurité, confidentialité et limites techniques#
L'analyse de données JSON impose de respecter certaines règles de sécurité et de tenir compte des contraintes des environnements d'exécution.
Traitement côté client et confidentialité#
ToolPorta valide vos documents JSON localement dans votre navigateur grâce au moteur JavaScript natif de votre terminal. Les données saisies dans l'éditeur restent contenues dans votre session locale et ne sont pas transmises à des serveurs distants pour analyse.
Pour autant, l'exécution locale ne dispense pas d'une hygiène rigoureuse. Évitez de copier des identifiants de production, des clés secrètes d'API, des jetons d'authentification ou des informations personnelles identifiables (PII) sur des postes partagés ou non sécurisés. Avant de déboguer une charge utile issue d'un environnement de production, remplacez les valeurs sensibles par des données fictives.
Limites de mémoire pour les volumétries importantes#
Les onglets des navigateurs web disposent d'un quota de mémoire vive alloué par le système. Si un validateur web traite sans difficulté des charges de plusieurs mégaoctets, des fichiers de plusieurs dizaines ou centaines de mégaoctets peuvent ralentir l'interface ou saturer l'onglet. Pour analyser des sauvegardes de bases de données ou des fichiers de plusieurs gigaoctets, privilégiez des utilitaires de traitement en flux en ligne de commande comme jq ou la bibliothèque ijson en Python.
Foire aux questions#
Pourquoi le JSON standard n'accepte-t-il pas les commentaires ?#
Douglas Crockford a délibérément exclu les commentaires de la norme JSON afin d'empêcher les développeurs d'y insérer des directives de compilation, des indications de schéma ou des commutateurs d'environnement. L'absence de commentaires garantit que chaque analyseur interprète rigoureusement le même modèle de données sans incompatibilité de dialecte.
Comment corriger l'erreur « Unexpected token < in JSON at position 0 » ?#
Cette erreur signale que votre application a reçu du code HTML au lieu du format JSON attendu. Examinez la réponse HTTP brute transmise par l'API : vous constaterez généralement un code d'erreur 401 (Non autorisé), 404 (Non trouvé) ou 500 (Erreur serveur) qui renvoie une page d'erreur web au lieu de l'objet JSON escompté.
Le JSON peut-il gérer de très grands entiers 64 bits sans perte de précision ?#
Les nombres en JavaScript utilisent la norme IEEE 754 à virgule flottante en double précision, ce qui limite les entiers représentés exactement à $2^{53} - 1$ (Number.MAX_SAFE_INTEGER, soit 9 007 199 254 740 991). Si vous manipulez des identifiants 64 bits ou des montants financiers de très haute précision, transmettez-les sous forme de chaînes entre guillemets doubles (ex. "id": "9007199254740993") pour éviter tout arrondi indésirable.
Pourquoi mon fichier JSON est-il refusé alors qu'il semble parfait à l'œil nu ?#
Certains caractères invisibles peuvent tromper l'œil humain tout en bloquant l'analyseur. Le copier-coller depuis des suites bureautiques ou des messageries peut insérer des guillemets dits « typographiques » (“ et ” au lieu de "), des espaces insécables (\u00A0), des espaces de largeur nulle (\u200B) ou un marqueur d'ordre d'octets UTF-8 (BOM). Un passage dans un validateur strict permet d'isoler immédiatement ces caractères parasites.
Existe-t-il un outil pour réparer automatiquement tout JSON corrompu ?#
Les outils de correction automatique traitent facilement les erreurs sans ambiguïté : suppression des virgules finales, remplacement des apostrophes simples ou échappement des antislashs standards. En revanche, lorsqu'un crochet ou une accolade manque, l'algorithme ne peut deviner l'endroit exact où la structure devait se terminer. Une intervention humaine reste alors indispensable pour garantir l'intégrité de la logique métier.
Essayez les outils JSON de ToolPorta#
En présence d'un document qui refuse de s'ouvrir, commencez par le validateur JSON pour repérer la ligne et le caractère à l'origine du blocage. Une fois la syntaxe réparée, appliquez le formateur JSON pour réorganiser lisiblement vos données, ou utilisez le minificateur JSON pour générer une version compacte optimisée pour vos échanges réseau.