Accueil
  • #développement
  • #JSON
  • #outils

Valider un JSON : les erreurs de syntaxe les plus courantes

Par · · 4 min de lecture

Vous collez un JSON dans votre code ou dans une API et le message tombe : « Unexpected token » ou « JSON invalide ». Le plus souvent, l’erreur tient à un seul caractère : une virgule de trop, des guillemets simples, une clé sans guillemets. Le format JSON est bien plus strict qu’un objet JavaScript, et les analyseurs ne pardonnent rien.

Voici les erreurs de syntaxe les plus courantes, comment les repérer vite, et la différence entre formater et minifier.

Les quatre erreurs qui reviennent le plus#

Chacune est valide en JavaScript, d’où la confusion, mais interdite en JSON.

  • La virgule finale après le dernier élément d’un objet ou d’un tableau : {"nom": "Vishnu", "ville": "Paris",} est refusé, [1, 2, 3,] aussi.
  • Les guillemets simples : le JSON n’accepte que les guillemets doubles, pour les clés comme pour les textes. {'nom': 'Vishnu'} est refusé.
  • Les clés sans guillemets : {nom: "Vishnu"} fonctionne dans un script, pas en JSON. Écrivez {"nom": "Vishnu"}.
  • Les commentaires : ni // ni /* … */ ne sont autorisés. Des variantes comme JSONC ou JSON5 les tolèrent, pas le JSON standard.

Les erreurs plus discrètes#

D’autres pièges se cachent dans des données copiées d’un programme :

  • Les valeurs undefined, NaN et Infinity n’existent pas en JSON. Utilisez null ou une chaîne.
  • Un retour à la ligne ou une tabulation dans un texte doit s’écrire \n ou \t. Un vrai saut de ligne à l’intérieur de guillemets est un caractère de contrôle interdit.
  • Un nombre ne peut pas commencer par un zéro : 007 est invalide. Si c’est un identifiant, mettez-le entre guillemets.
  • Deux objets collés l’un à la suite de l’autre ({…}{…}) ne forment pas un JSON valide : il faut les placer dans un tableau.
  • Les clés en double ne provoquent pas d’erreur, mais seule la dernière valeur est conservée. Le piège est silencieux.

Comprendre le message d’erreur#

L’analyseur signale l’endroit où il a compris que quelque chose clochait, pas forcément celui où vous avez fait la faute. Exemple avec une virgule oubliée :

{
  "nom": "Vishnu"
  "ville": "Paris"
}

La virgule manque à la fin de la ligne 2, mais l’erreur est signalée ligne 3, sur le début de "ville". De même, une virgule finale est signalée à l’accolade qui suit. Quand la position ne vous éclaire pas, regardez la ligne juste au-dessus.

Formater ou minifier : quelle différence#

Les deux opérations ne changent pas les données, seulement leur présentation.

  • Formater ajoute des retours à la ligne et une indentation (2 espaces, 4 espaces ou une tabulation). C’est le format à lire, à relire dans un échange de code ou à comparer dans un diff.
  • Minifier supprime tous les espaces inutiles. Le contenu devient plus compact, ce qui compte pour une réponse d’API ou un fichier envoyé au navigateur.

Voici le même contenu dans les deux présentations :

{
  "nom": "Vishnu",
  "actif": true
}
{"nom":"Vishnu","actif":true}

Le premier fait 38 caractères, le second 29. Sur un gros fichier, l’écart devient significatif.

Un point d’attention : reformater relit puis réécrit le JSON, et les entiers de plus de 15 chiffres peuvent être arrondis (12345678901234567890 devient 12345678901234567000). Gardez les identifiants très longs sous forme de texte.

Valider et formater avec l’outil#

Le formateur JSON valide pendant que vous collez :

  1. Collez votre JSON dans « JSON en entrée ». Le statut « JSON valide » ou « JSON invalide » s’affiche, avec la ligne et la colonne de l’erreur, un extrait de la ligne et le caractère fautif surligné. Selon le moteur du navigateur, la position n’est pas toujours disponible.
  2. Choisissez l’Indentation (2 espaces, 4 espaces, Tabulation) et, si besoin, cochez Trier les clés pour les classer par ordre alphabétique.
  3. Cliquez sur Formater ou Minifier, puis copiez le résultat ou téléchargez-le en .json.

Le bouton Exemple charge un JSON de démonstration. Tout se fait dans votre navigateur : vos données ne sont pas envoyées. Si votre JSON vient d’un tableur, le convertisseur CSV ↔ JSON le génère (voir les pièges de la conversion CSV en JSON). Pour lire le contenu d’un jeton, le décodeur JWT l’affiche en JSON lisible.

À retenir#

Pas de virgule finale, pas de commentaire, des guillemets doubles partout, y compris pour les clés. Quand une erreur apparaît, regardez la position annoncée, puis la ligne précédente. Formatez pour lire, minifiez pour transporter.

Outils utilisés dans cet article

À lire aussi