Erreurs de parsing JSON : 10 echecs courants et comment les corriger

2024-09-12

Les reponses API et fichiers de configuration echouent souvent a cause d'une seule ligne invalide. Ce guide couvre dix erreurs courantes avec exemple casse, cause et JSON corrige, plus la facon de trouver la ligne dans notre outil en ligne.

1. Apostrophes pour les cles ou chaines

JSON impose les guillemets doubles pour les cles et les valeurs texte. Les litteraux objet JavaScript acceptent les apostrophes ; JSON non.

Erreur typique : Unexpected token ' in JSON at position ...

Invalide
{
  name: "Alice",
  "age": 30
}
Corrige
{
  "name": "Alice",
  "age": 30
}

2. Virgules finales

Aucune virgule apres la derniere propriete ou le dernier element de tableau. Certains editeurs ajoutent des virgules finales qui cassent les parseurs JSON stricts.

Les litteraux JavaScript ES2019+ acceptent les virgules finales ; la specification JSON (RFC 8259) ne les accepte jamais.

Invalide
{
  "items": [1, 2, 3,],
  "tags": ["a", "b",]
}
Corrige
{
  "items": [1, 2, 3],
  "tags": ["a", "b"]
}

3. Cles non quotees

Chaque cle doit etre une chaine entre guillemets doubles. { active: true } est invalide en JSON.

{
  active: true,
  "score": 95
}

4. Virgules manquantes ou en trop

Les paires adjacentes doivent etre separees par des virgules ; les virgules doubles declenchent des erreurs Unexpected token.

Virgule manquante
{
  "a": 1
  "b": 2
}
Virgule en trop
{
  "a": 1,, "b": 2
}

5. Sequences d'echappement invalides

Dans les chemins, chaque antislash doit etre double : \\ pour chaque \. Un antislash seul provoque Bad escaped character.

Invalide
{ "path": "C:\Users\data" }
Corrige
{ "path": "C:\\Users\\data" }

6. NaN, Infinity, undefined

JSON n'a que null pour representer l'absence ; il n'accepte pas les valeurs propres a JavaScript comme NaN ou undefined.

{ "value": NaN }

7. Commentaires

JSON ne supporte pas les commentaires // ni /* */. Supprimez-les avant le parsing.

La documentation, JSONC de VS Code et JSON5 autorisent les commentaires ; ce n'est pas une entree valide pour JSON.parse. Pour l'echange de donnees, restez en JSON strict.

{
  // user profile
  "name": "Bob"
}

8. Plusieurs valeurs racine ou crochets non fermes

Un JSON valide contient un seul objet ou un seul tableau a la racine. Une accolade } ou un crochet ] manquant provoque Unexpected end of JSON input.

9. Nombres invalides

Pas de zero initial (007), pas d'hexadecimal (0xFF), pas de point decimal isole.

10. Caracteres de controle non echappes

Les retours ligne et tabulations dans une chaine doivent etre \n et \t, pas des sauts de ligne litteraux copies depuis des logs.

Essayer en ligne

Collez votre texte dans l'outil JSON. En cas d'echec, le panneau affiche le message et le numero de ligne ; l'editeur surligne cette ligne.

Apres correction, reformatez ou minifiez ; un message de succes confirme que le JSON est valide.