Aide technique
Erreurs JSON courantes : virgules finales, guillemets et Unexpected token
Corriger du JSON invalide : virgule finale, guillemets simples, clés sans guillemets et Unexpected token. Pourquoi JSON.parse échoue.
La plupart des erreurs JSON viennent d’une syntaxe stricte : virgules finales, guillemets simples, noms de propriété sans guillemets, virgules manquantes, crochets mal appariés, échappements invalides ou commentaires.
JSON ressemble à un objet JavaScript, mais il est plus strict. Les noms de propriété et les chaînes exigent des guillemets doubles.
Si vous voyez « Unexpected token », le caractère indiqué peut être l’endroit où l’analyse a échoué, pas forcément où l’erreur a commencé.
Votre JSON est marqué invalide. C’est presque toujours un détail de syntaxe, pas un format cassé. Les sept erreurs ci-dessous causent la plupart des Unexpected token.
Pourquoi JSON casse-t-il si facilement ?
JSON est un format de données à syntaxe stricte. Un objet littéral JavaScript peut sembler similaire et rester du JSON invalide. En JSON standard, les noms et les chaînes prennent des guillemets doubles, les virgules finales sont interdites et les commentaires ne font pas partie du format.
1. Virgules finales (trailing commas)
La virgule en trop après la dernière propriété est le problème. Le JSON standard ne l’autorise pas.
Invalide
{
"name": "Alex",
"age": 30,
}
Valide
{
"name": "Alex",
"age": 30
}
La même règle vaut pour les tableaux. Retirez la virgule après le dernier élément.
Invalide
[
"red",
"green",
]
Valide
[
"red",
"green"
]
2. Guillemets simples au lieu de doubles
JavaScript accepte souvent les guillemets simples. JSON non. Les noms de propriété et les valeurs chaîne doivent utiliser des guillemets doubles.
Invalide
{
'name': 'Alex'
}
Valide
{
"name": "Alex"
}
3. Noms de propriété sans guillemets
En JavaScript, on peut parfois écrire name sans guillemets. En JSON, chaque nom de propriété doit être une chaîne entre guillemets doubles.
Invalide
{
name: "Alex",
age: 30
}
Valide
{
"name": "Alex",
"age": 30
}
4. Virgules manquantes entre les valeurs
Il faut une virgule entre les propriétés et entre les éléments de tableau. L’analyseur peut signaler Unexpected token sur le guillemet ou l’accolade suivante, pas sur la virgule manquante.
Invalide
{
"name": "Alex"
"age": 30
}
Valide
{
"name": "Alex",
"age": 30
}
5. Crochets et accolades en trop ou en moins
Les objets utilisent { }. Les tableaux utilisent [ ]. Le JSON imbriqué échoue quand un ] manque, un } est en trop, ou les deux sont inversés. Comptez les paires ouvrantes et fermantes.
Invalide
{
"items": [1, 2
}
Valide
{
"items": [1, 2]
}
6. Séquences d’échappement invalides
Dans une chaîne JSON, la barre inverse démarre un échappement. Les séquences ", \ et \n sont valides. Un chemin Windows écrit C:\Users ne l’est pas : \U n’est pas un échappement JSON légal. Doublez les barres, sinon l’analyseur s’arrête sur ce caractère.
Invalide
{"file":"C:\Users\Alex"}
Valide
{"file":"C:\\Users\\Alex"}
7. Commentaires dans JSON
Le JSON standard n’a pas de commentaires. Certains outils de config acceptent // ou /* */ (JSONC, JSON5 et similaires). Ce n’est pas du JSON standard, et JSON.parse le refuse.
Invalide
{
// user name
"name": "Alex"
}
Que signifie « Unexpected token » ?
L’analyseur a rencontré un caractère non autorisé à cette position. L’endroit indiqué est où la lecture s’est arrêtée. Si une virgule manque plus tôt, l’erreur peut pointer le guillemet de la propriété suivante. Le libellé dépend du runtime ; n’attendez pas la même phrase dans tous les navigateurs.
Que signifie « Unexpected end of JSON input » ?
Le texte s’est arrêté avant que la valeur soit complète. Causes typiques : } ou ] manquant, entrée tronquée, corps vide ou réponse d’API coupée. Ce n’est pas un seul bug.
Pourquoi JSON.parse() échoue-t-il ?
JSON.parse() n’accepte que du texte JSON valide. Ceci réussit :
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Ceci échoue, car les guillemets simples ne sont pas du JSON :
const text = "{'name':'Alex'}";
JSON.parse(text);
Le message exact dépend du runtime JavaScript. Traitez-le comme un indice, puis inspectez virgules, quotes et crochets près de cette position.
Un objet littéral JavaScript peut ressembler à { name: 'Alex' }. Le JSON valide doit ressembler à { "name": "Alex" } : noms et chaînes en guillemets doubles, pas de virgule finale, pas de commentaires.
- Texte JSON
- L’analyseur lit des tokens
- Données valides ou Unexpected token
Trouver une erreur JSON rapidement
Suivez cet ordre. Ne commencez pas par réécrire tout le fichier.
- Passez le JSON dans un validateur.
- Lisez la première erreur signalée.
- Regardez un peu avant la position indiquée.
- Vérifiez les virgules, surtout finales et manquantes.
- Vérifiez les guillemets : doubles uniquement.
- Appariez { } et [ ].
- Vérifiez les échappements barre inverse dans les chaînes.
- Retirez les commentaires si vous avez besoin de JSON strict.
Carte rapide des corrections habituelles :
| Problème | Correction |
|---|---|
| Virgule finale | Supprimez la virgule après le dernier élément. |
| Guillemets simples | Utilisez des guillemets doubles pour les noms et les chaînes. |
| Clé sans guillemets | Entourez le nom de propriété de guillemets doubles. |
| Virgule manquante | Mettez une virgule entre propriétés ou éléments. |
| Crochet manquant | Fermez chaque paire { } et [ ]. |
| Échappement invalide | Utilisez un échappement légal, ou doublez les barres dans les chemins. |
| Commentaire | Retirez // et /* */ pour du JSON standard. |
Valider et formater JSON dans le navigateur
NEXNARA Formater et comparer du JSON peut vérifier du JSON sur cet appareil.
Vous pouvez valider, formater avec 2 espaces, 4 espaces ou des tabulations, minifier, comparer deux documents (JSON Diff) et ouvrir un fichier .json. L’analyse utilise JSON.parse dans le navigateur, pas eval.
Les documents de plus de 5 Mo peuvent sembler lents. Un texte de plus de 15 Mo n’est pas traité dans le navigateur, pour que la page reste réactive.
Le traitement JSON se fait dans votre navigateur. Cet outil n’envoie pas le texte à un serveur NEXNARA. Les publicités et autres fonctions du site utilisent encore le réseau ; c’est distinct du traitement.
Besoin de vérifier du JSON invalide ? Ouvrez Formater et comparer du JSON et collez le texte.
FAQ
Pourquoi mon JSON dit-il « Unexpected token » ?
L’analyseur a rencontré un caractère non autorisé à cet endroit. L’erreur réelle — souvent une virgule manquante ou un guillemet simple — peut se trouver juste avant.
Les virgules finales sont-elles autorisées en JSON ?
Non. Le JSON standard n’autorise pas de virgule après la dernière propriété ou le dernier élément de tableau. Les objets littéraux JavaScript le font souvent.
JSON peut-il utiliser des guillemets simples ?
Non. Les noms de propriété et les chaînes doivent utiliser des guillemets doubles.
JSON peut-il contenir des commentaires ?
Pas en JSON standard. Certains outils acceptent JSONC ou JSON5 avec commentaires ; JSON.parse les refuse quand même.
Pourquoi JSON.parse() échoue-t-il ?
La chaîne n’est pas du JSON valide. Causes typiques : virgules finales, guillemets simples, clés sans quotes, commentaires ou valeur tronquée. Le message exact dépend du runtime.
Comment vérifier si le JSON est valide ?
Collez-le dans un validateur comme Formater et comparer du JSON ou appelez JSON.parse dans une console. Si l’analyse lève une exception, le texte n’est pas du JSON valide.