Erreurs JSON les plus fréquentes et comment les corriger
La plupart des erreurs de parsing JSON proviennent d'une courte liste de fautes : une virgule finale, une chaîne entre guillemets simples, un commentaire, une clé sans guillemets, une valeur comme NaN ou undefined, ou des guillemets courbes copiés depuis un document. Le JSON est plus strict que le JavaScript auquel il ressemble : du code qui paraît correct à l'œil peut donc être rejeté par un parseur. Le message d'erreur indique une ligne et une colonne, et la correction se trouve généralement à cet endroit ou juste avant.
Formater du JSONLe JSON ne s’analyse pasEssayer gratuitementLes règles imposées par JSON
Un document JSON est une seule valeur : un objet entre accolades, un tableau entre crochets, une chaîne, un nombre, true, false ou null. À l'intérieur de ces valeurs :
- Chaque clé et chaque chaîne utilise des guillemets droits doubles, comme « name ».
- Les virgules séparent les éléments, et il ne doit y avoir aucune virgule après le dernier élément d'un objet ou d'un tableau.
- Les nombres ne peuvent pas commencer par un signe plus, et NaN, Infinity et undefined ne sont ni des nombres ni des valeurs valides.
- Les commentaires ne sont pas autorisés du tout.
- Les clés doivent être des chaînes : une clé sans guillemets comme name: est donc invalide.
Certains parseurs acceptent par défaut quelques-unes de ces règles, et certains outils acceptent le JSON avec commentaires par commodité. Cette tolérance masque le problème jusqu'à ce que le fichier atteigne un lecteur plus strict. Écrivez donc la forme stricte.
Lire le message d'erreur
Les parseurs signalent le premier endroit où ils ne peuvent pas continuer. Le message nomme le problème et donne une position, généralement une ligne et une colonne. Voici un petit fichier avec une virgule finale dans un tableau, et une autre après la dernière propriété :
{
"name": "Ada",
"tags": ["a", "b",],
}
Python signale cela par « Illegal trailing comma before end of array: line 3 column 20 ». Les formulations varient selon les outils, et certains anciens parseurs se contentent de « Unexpected token » avec un décalage en caractères. Rendez-vous à la position indiquée, puis regardez le caractère qui la précède. La vraie faute se trouve souvent une virgule, un guillemet ou une accolade un ou deux caractères avant l'endroit signalé.
Quelques autres messages de l'analyseur de Python, et ce qu'ils signifient généralement :
- « Expecting property name enclosed in double quotes » pour '{'a': 1}' signale une clé entre guillemets simples ou sans guillemets.
- « Expecting value » à une position où vous attendiez un nombre ou une chaîne signale souvent un guillemet courbe, que le parseur voit comme un caractère inconnu.
- « Expecting ',' delimiter » signale généralement une virgule manquante entre deux éléments, ou un commentaire au milieu des données.
Guillemets courbes et texte copié
Les guillemets courbes sont le cas le plus déroutant, car ils ressemblent presque aux guillemets droits. Un fichier JSON copié depuis un traitement de texte, une page web ou un message de discussion peut contenir des guillemets doubles courbes. Le fichier vous paraît juste et échoue pourtant à l'analyse, car le parseur voit “x” comme un caractère inconnu et non comme un délimiteur de chaîne.
Les caractères cachés provoquent le même type d'échec. Une espace insécable entre deux valeurs n'est pas un espace pour le parseur. Supprimer les caractères invisibles avant d'essayer de réparer la structure à la main, puis corrigez les guillemets. Le guide sur les guillemets courbes explique comment les redresser sans risque.
Guillemets simples, commentaires et clés sans guillemets
Beaucoup de développeurs écrivent des données de type JSON dans un langage qui en autorise davantage :
- Les guillemets simples sont valides dans les littéraux JavaScript et Python, mais le JSON exige des guillemets doubles. Remplacez {'a': 1} par {"a": 1}.
- Les commentaires, comme
//ou/* */, doivent être supprimés. Si vous avez besoin de notes, placez-les dans un champ séparé, ou utilisez un format conçu pour les fichiers de configuration. - Les clés sans guillemets sont courantes dans les objets littéraux JavaScript. Ajoutez les guillemets.
- NaN et undefined ne sont pas du JSON. Utilisez null pour une valeur absente, ou une chaîne si la valeur est du texte.
Méfiez-vous d'un remplacement global. Remplacer chaque guillemet simple par un guillemet double casse toute chaîne contenant une apostrophe, comme « Ada's notes ». Prévisualisez d'abord chaque occurrence dans Rechercher et remplacer pour voir quels guillemets seraient modifiés.
Corriger la structure étape par étape
- Collez le fichier dans Formater du JSON. La mise en forme rend la structure visible, et l'erreur indique sa ligne et sa colonne. Cliquez ensuite sur Réparer, qui supprime les commentaires et les virgules finales. Il ne modifie pas les guillemets simples ni les guillemets courbes : corrigez-les vous-même.
- Corrigez seulement la première erreur, puis vérifiez à nouveau. Une seule faute peut en produire plusieurs plus loin dans le fichier.
- Vérifiez que chaque accolade ou crochet ouvrant a sa fermeture, et que l'imbrication correspond à ce que vous voulez.
- Validez le fichier final avec le parseur utilisé par votre application, pas seulement avec un outil web. Les parseurs diffèrent légèrement.
Un fichier qui s'analyse correctement n'est pas forcément le fichier que vous vouliez. Vérifiez-le avec le Validateur JSON Schema pour repérer un champ manquant ou une valeur du mauvais type, ou comparez deux documents JSON pour voir ce qui a changé entre deux versions.
Cas particuliers
- Virgules finales dans les fichiers générés. Certains outils en écrivent. Si vous produisez du JSON en assemblant des chaînes à la main, utilisez le sérialiseur de votre langage, qui produit une sortie valide.
- Clés en double. Le JSON les autorise, mais la plupart des parseurs ne gardent que la dernière valeur. Les clés en double sont une source de bogues potentiels.
- Grands nombres. De très grands entiers peuvent perdre en précision dans certains parseurs. Stockez donc les identifiants sous forme de chaînes s'ils sont plus longs que ce que le parseur peut représenter exactement. Le guide CSV vers JSON fait la même remarque au sujet des identifiants.
Réponses rapides
Pourquoi mon JSON échoue-t-il alors qu'il semble correct ?
Les causes habituelles sont une virgule finale, des guillemets simples, un commentaire ou des guillemets courbes copiés depuis un document. Vérifiez la position indiquée dans le message d'erreur et le caractère qui la précède.
Le JSON peut-il contenir des commentaires ?
Non. La norme JSON n'autorise pas les commentaires. Supprimez-les, ou déplacez les notes dans un champ à part. Le bouton Réparer du formateur les supprime pour vous.
Que dois-je utiliser à la place de undefined en JSON ?
Utilisez null lorsqu'une valeur est volontairement absente, ou omettez complètement la clé. undefined est une valeur JavaScript et n'a pas de représentation en JSON.
Traduit de Version originale anglaise avec l’aide de l’IA.
Commentaires
Aucun commentaire pour l’instant. Soyez le premier.


