JSON est le format d’échange de données dominant dans les logiciels modernes : il alimente presque toutes les API REST, sert de format par défaut aux bases documentaires NoSQL, configure la plupart des outils de compilation et porte les messages des principaux systèmes de diffusion d’événements. Malgré cette omniprésence, certaines difficultés reviennent régulièrement : une syntaxe stricte différente des littéraux d’objet JavaScript, des cas limites liés aux grands nombres et à Unicode, et le choix entre minification et mise en forme lisible. Les sections suivantes expliquent ce qui constitue un JSON valide, quand le minifier ou le mettre en forme, les cinq erreurs de syntaxe les plus fréquentes et des conseils pratiques pour les usages courants.

Qu’est-ce qu’un JSON valide ?

JSON (RFC 8259) est plus strict que beaucoup de développeurs ne le pensent, et ces règles piègent régulièrement même les ingénieurs expérimentés. Toutes les chaînes doivent utiliser des guillemets doubles : les guillemets simples et les clés sans guillemets sont des erreurs de syntaxe, même si ces deux formes sont valides dans les littéraux d’objet JavaScript. Les virgules après le dernier élément d’un objet ou d’un tableau sont interdites, contrairement aux versions modernes de JavaScript et de Python, où elles facilitent les différences dans le contrôle de version. Aucun type de commentaire n’est autorisé dans un JSON valide : ni les commentaires de ligne `//`, ni les commentaires de bloc `/* */`. La valeur racine doit être un objet, un tableau, une chaîne, un nombre, un booléen ou null ; les valeurs d’autres types (fonctions, dates, undefined) échouent à la validation. La grammaire des nombres exclut `NaN`, `Infinity` et `-Infinity` comme valeurs littérales, ainsi que les zéros initiaux dans les parties entières (sauf pour 0). Ces règles diffèrent des littéraux d’objet JavaScript : un « JSON » écrit à la main échoue donc souvent lors d’une validation. En pratique, validez toujours le JSON généré avant de l’ajouter au contrôle de version, de l’envoyer comme réponse d’API ou de le stocker dans une base de données. Une erreur détectée immédiatement dans le formateur coûte moins cher à corriger qu’une erreur découverte plusieurs environnements plus loin.

Quand minifier ou mettre en forme

Le choix dépend du destinataire : minifiez pour les machines et mettez en forme pour les humains. L’usage machine comprend les réponses d’API, le stockage en base de données, les files de messages, l’agrégation de journaux, la transmission réseau et tout contexte où les octets comptent davantage que la lisibilité. Une réponse REST typique diminue de 25 à 40 % après minification, ce qui réduit la bande passante, la latence de chargement et l’espace de stockage. Avec gzip ou brotli au niveau HTTP, l’économie totale peut atteindre 80 à 90 % pour les grandes charges utiles. La mise en forme lisible convient aux fichiers de configuration versionnés, aux exemples de documentation, aux extraits de README, aux sorties de débogage et à tout contenu destiné à être lu. Le style d’indentation (2 espaces, 4 espaces ou tabulations) dépend des conventions du projet : utilisez généralement 2 espaces pour JavaScript, TypeScript et les projets web, 4 espaces pour les flux de travail liés à Python (conformément à PEP 8) et des tabulations dans les projets qui les imposent, encore présents dans certaines bases de code Go et Java plus anciennes. Cet outil utilise deux espaces par défaut et mémorise votre préférence entre les sessions. Le tri des clés rend les fichiers déterministes : deux objets équivalents produisent un résultat identique octet par octet, ce qui facilite les différences de version et la mise en cache.

Erreurs JSON courantes

Cinq erreurs sont à l’origine de la grande majorité des échecs d’analyse JSON. Premièrement, les virgules finales : `{"a": 1, "b": 2,}` est invalide en JSON, même si cette syntaxe est valide en JavaScript. Supprimez la virgule après la dernière valeur ou cliquez sur Réparer. Deuxièmement, les guillemets simples : {'key': 'value'} est une sérialisation de dictionnaire Python ou un littéral d’objet JavaScript, pas du JSON. Toutes les chaînes JSON doivent avoir des guillemets doubles ; Réparer les remplace en préservant les caractères échappés. Troisièmement, les commentaires intégrés : JSON n’a pas de syntaxe de commentaire, malgré l’usage courant de JSONC (« JSON avec commentaires ») dans les fichiers de configuration d’éditeurs et d’outils. JSONC est une extension de VS Code, pas un dialecte conforme à la spécification. Supprimez les commentaires avant l’analyse ; Réparer s’en charge automatiquement. Quatrièmement, les clés sans guillemets : `{name: "Alice"}` est valide en JavaScript mais pas en JSON ; les clés doivent être des chaînes entre guillemets doubles. Cette erreur survient souvent lors d’une copie depuis du code JavaScript ; Réparer peut ajouter des guillemets aux clés courantes de type identifiant. Cinquièmement, `NaN`, `Infinity` et `-Infinity` : la spécification JSON n’autorise que les nombres finis. Ces valeurs spéciales à virgule flottante doivent être représentées par des chaînes (`"NaN"`) ou par null, selon les besoins de l’application en aval. De nombreux analyseurs les acceptent comme extensions, mais les analyseurs conformes à la spécification les rejettent.

Conseils pratiques pour travailler avec JSON

Quelques habitudes couvrent la plupart des tâches JSON courantes. Utilisez l’Explorateur d’arborescence pour les grandes charges utiles : il affiche les premiers niveaux à la demande, ce qui allège le rendu initial, même si les fichiers volumineux utilisent toujours la mémoire du navigateur. Recherchez un nom de clé pour accéder directement aux données voulues plutôt que de parcourir des milliers de lignes. Triez les clés avant de comparer deux objets JSON : un diff textuel les distingue lorsque l’ordre des clés diffère, mais ils deviennent identiques octet par octet après le tri. Le tri produit une sortie déterministe pour des différences de version fiables et la génération de clés de cache. Exportez en CSV les tableaux d’objets plats pour les utiliser dans un tableur : lorsque chaque enregistrement possède les mêmes clés, le convertisseur crée un tableau ouvrable directement dans Excel ou Google Sheets. Les objets imbriqués dans les lignes sont sérialisés sous forme de chaînes JSON dans leurs cellules, ce qui préserve leur structure sans rompre le format tabulaire du CSV. Essayez Réparer avant de rejeter un JSON invalide : l’outil corrige les problèmes courants (virgules finales, commentaires, guillemets simples et clés sans guillemets) et évite une correction manuelle ligne par ligne.