Comment réparer un JSON invalide : les 7 erreurs qui interrompent chaque analyseur

20 de juin de 2026 · 8 min de lecture
Essayer l’outilFormateur JSON →

L'analyse JSON semble triviale jusqu'à ce qu'un seul caractère errant interrompe votre build cinq minutes avant un déploiement. JSON est intentionnellement strict, plus strict que JavaScript, c'est exactement pourquoi les développeurs issus de JS continuent de se faire surprendre. La bonne nouvelle est que presque toutes les erreurs « JSON invalide » sont l'une des sept erreurs courantes. Apprenez à les reconnaître et la plupart des JSON cassés sont à un caractère d'être valides.

1. Les virgules finales (le coupable numéro un)

Il s’agit de l’erreur JSON la plus courante. JavaScript vous permet de laisser une virgule après le dernier élément d'un objet ou d'un tableau ; JSON, selon sa spécification RFC 8259, ne le fait pas. Donc {"name": "Alice", "age": 30,} n'est pas valide à cause de cette virgule après 30, et ["a", "b",] n'est pas valide pour la même raison. Le correctif consiste simplement à supprimer la virgule après la propriété finale ou l'élément du tableau. Celui-ci mord tout le monde, des juniors éditant manuellement un fichier de configuration aux seniors collant un extrait de code JavaScript.

2. Des guillemets simples au lieu de guillemets doubles

JSON nécessite des guillemets doubles autour des clés et des valeurs de chaîne. Les guillemets simples sont valides en JavaScript et Python, mais pas en JSON. Donc {'name': 'Alice'} n'est pas valide ; ce doit être {"name": "Alice"}. Cela se produit généralement lorsque votre charge utile provient d'une sortie console.log JavaScript ou de la sortie str() de Python. La recherche et le remplacement de guillemets simples à doubles fonctionnent souvent, mais faites attention aux apostrophes à l'intérieur des chaînes, "c'est" se briserait, donc un correctif prenant en charge l'analyseur est plus sûr.

3. Clés non citées

En JavaScript, vous pouvez écrire des clés d'objet sans guillemets : {name : "Alice"}. JSON ne le permet pas, chaque clé doit être une chaîne entre guillemets doubles. Donc {name: "Alice"} doit devenir {"name": "Alice"}. Il s'agit d'un autre symptôme de la copie d'un littéral d'objet JavaScript directement dans un contexte JSON.

4. Supports manquants ou incompatibles

Chaque accolade ouvrante a besoin d’une accolade fermante, et chaque crochet ouvrant a besoin de sa paire. Lorsqu'ils ne correspondent pas, vous obtenez le redoutable « Fin inattendue de l'entrée JSON ». Ceux-ci sont difficiles à repérer à l'œil nu dans un fichier volumineux, c'est là qu'un formateur qui imprime joliment et met en évidence la correspondance des crochets gagne sa place, les crochets incompatibles sautent au moment où la structure est en retrait.

5. Commentaires

JSON n'a pas de commentaires. Pas de commentaires // en ligne, pas de commentaires de bloc. Si vous avez ajouté un commentaire pour expliquer un champ, l'analyseur rejette l'intégralité du fichier. Les paramètres de VS Code utilisent une variante appelée JSONC qui autorise les commentaires, et il existe un sur-ensemble appelé JSON5 qui autorise les commentaires, les guillemets simples et les virgules finales, mais les analyseurs standard comme JSON.parse, le module json de Python et la plupart des bibliothèques de serveur n'acceptent que le JSON strict. Pour les fichiers de configuration nécessitant des commentaires, YAML ou JSONC sont de meilleurs choix que de plier JSON.

6. Valeurs JavaScript qui ne sont pas des JSON valides

Trois valeurs existent en JavaScript mais pas en JSON : undefined, NaN et Infinity. Si votre source de données en a produit un, courant lors de la sérialisation d'objets contenant un échec de conversion numérique, le résultat est un JSON non valide. Le correctif consiste à les remplacer par null (l'équivalent JSON de « aucune valeur ») ou une valeur par défaut raisonnable. Le bug se situe généralement en amont, au point où les données ont été générées, et non dans le JSON lui-même.

7. Caractères non échappés dans les chaînes

Certains caractères doivent être échappés avec une barre oblique inverse à l'intérieur d'une chaîne JSON. Une nouvelle ligne brute, une tabulation ou une barre oblique inverse littérale entraînera un échec d'analyse. Ainsi, un chemin Windows tel que "C:\Users\Alice" n'est pas valide, les barres obliques inverses doivent être doublées en "C:\\Users\\Alice" et un véritable saut de ligne à l'intérieur d'une chaîne doit être écrit sous la forme \n. Ceux-ci sont invisibles dans de nombreux éditeurs, ce qui rend leur recherche frustrante.

Le workflow de débogage le plus rapide

Le pire message d'erreur JSON est simplement "Json invalide" sans emplacement. Un bon validateur fait trois choses : vous indique ce qui ne va pas, vous indique où (ligne et colonne) et montre le contexte environnant. Le flux de travail le plus rapide consiste à coller le fichier dans un validateur, à lire la ligne vers laquelle il pointe, puis à vérifier la ligne au-dessus, car l'analyseur ne se rend souvent compte que que quelque chose ne va pas lorsqu'il atteint le jeton suivant, donc une virgule manquante sur la ligne 4 apparaît comme une erreur sur la ligne 5. Si l'erreur pointe vers la position 0, recherchez une marque d'ordre d'octet ou un texte parasite avant le crochet ouvrant.

Le formateur TextCaret JSON utilise le moteur JSON natif du navigateur pour valider et imprimer joliment votre JSON, de sorte que vous obtenez le même rapport d'erreurs précis que vos outils de développement, et comme il s'exécute localement, le JSON contenant des clés ou des données personnelles ne quitte jamais votre machine.

Prévenir le JSON invalide

Trois habitudes évitent la plupart des problèmes JSON. Ne modifiez jamais manuellement de gros fichiers JSON sans un outil qui respecte la grammaire. Jolie impression lors de la sauvegarde, car les erreurs structurelles sont évidentes dans le JSON indenté et cachées dans une seule ligne compacte. Et validez avant de vous engager, une simple vérification dans votre pipeline CI détecte les erreurs de syntaxe avant qu'elles n'atteignent un environnement. Le JSON le plus cassé est à un caractère valide ; le truc, c'est d'attraper ce personnage tôt.

Essayer l’outilFormateur JSON →