Le JSON « cassé » est un problème courant : le fichier a l'air presque correct, mais un analyseur refuse de le lire. La cause est souvent un simple nombre collé tel quel depuis un tableur réglé en français.
Causes courantes de JSON invalide
- Une virgule superflue avant une accolade fermante —
{"a": 1,}— que JavaScript tolère mais qu'un analyseur JSON strict rejette. - Des guillemets simples au lieu de doubles — fréquent en copiant depuis un littéral d'objet JavaScript.
- Des clés sans guillemets —
{name: "Alice"}au lieu de{"name": "Alice"}. - Des commentaires — la spécification JSON n'autorise aucun commentaire, contrairement à JSON5 ou JSONC.
- Une sortie tronquée — si une réponse d'API ou un fichier de log est coupé en plein milieu, le document reste non fermé.
La virgule décimale, un piège discret venu d'Excel
En France, la virgule sépare les décimales et l'espace (insécable) regroupe les milliers : « 1 234,50 » est un prix parfaitement normal dans un tableur ou un export CSV. Collé tel quel dans un champ JSON, {"prix": 1 234,50} n'est pas un nombre décimal valide pour l'analyseur — l'espace à l'intérieur d'un nombre est déjà invalide, et la virgule qui suit ne fait qu'ajouter à la confusion. Un outil de réparation peut retirer l'espace et remplacer la virgule par un point, mais il ne peut pas garantir que la valeur obtenue est bien celle voulue plutôt qu'un nombre tronqué.
Comment fonctionne la réparation automatique
Un outil de réparation JSON applique des heuristiques : ajouter les guillemets manquants, supprimer les virgules superflues, fermer les accolades non fermées selon le contexte. Cela fonctionne bien pour les erreurs courantes, mais ce n'est pas magique — l'outil ne peut pas deviner quelle valeur était prévue si les données sont plus gravement corrompues.
Les limites du possible
La réparation automatique corrige la syntaxe, pas la sémantique. Si un champ entier manque, ou qu'une valeur est fausse logiquement, l'outil ne le détectera pas — le résultat nécessite quand même une vérification manuelle, surtout quand les nombres proviennent d'un tableur au format français.
Quand la réparation est ambiguë
Certaines corruptions ont plusieurs corrections tout aussi plausibles. Une chaîne tronquée comme {"a": 1, "b": 2 peut simplement être fermée par une accolade — au risque de perdre des données si un autre champ était réellement prévu. Dans ces cas, l'heuristique fait l'hypothèse « la moins destructrice », mais ce n'est qu'une supposition, pas une garantie.