JSON est le format d'échange de données dominant sur le web moderne. Simple en surface — une poignée de types primitifs, objets à clés chaînes, tableaux — sa rigueur piège pourtant les développeurs tous les jours. Ce guide parcourt la structure, les pièges de syntaxe qui échouent à la validation, quand formater vs minifier, et les variantes plus souples qu'on rencontre.
Structure JSON
Tout document JSON est un objet (entre { } avec des paires clé–valeur séparées par virgules) ou un tableau (entre [ ] avec des valeurs séparées par virgules). Les valeurs sont des chaînes (guillemets doubles), nombres, booléens (true/false), null, objets ou tableaux. Les clés doivent toujours être des chaînes entre guillemets doubles — pas de guillemets simples, pas d'identifiants nus.
Erreurs de syntaxe qui coûtent des heures
- Virgules finales —
[1, 2, 3,]est valide en JavaScript mais illégal en JSON. Le dernier élément ne peut pas avoir de virgule finale. - Guillemets simples —
{'clé': 'valeur'}est du JavaScript, pas du JSON. Clés et valeurs chaînes exigent des guillemets doubles. - Commentaires — JSON n'a pas de syntaxe de commentaires.
// noteou/* bloc */fait échouerJSON.parse. - Clés non entre guillemets —
{nom: "Daytics"}échoue. Il faut{"nom": "Daytics"}. - Caractères de contrôle dans les chaînes — sauts de ligne, tabulations, ou nulls littéraux dans une chaîne sans échappement.
- NaN et Infinity — ne sont pas des nombres JSON valides. Sérialisez en chaîne ou
null.
Pretty-print vs minifier
Le JSON formaté est pour les humains : indentation et sauts de ligne aident à lire la structure et comparer les valeurs. Utilisez-le pour la configuration, la documentation, les logs de debug. Le JSON minifié est pour les machines : tout sur une ligne, zéro espace, payload minimal. À utiliser quand le JSON passe par le réseau ou est stocké en masse. La plupart des outils basculent entre les deux en un appel (JSON.stringify(obj, null, 2) joli, JSON.stringify(obj) minifié).
JSON5 et JSONC
Quand on a besoin de commentaires et virgules finales, deux sur-ensembles courants. JSON5 autorise guillemets simples, clés non guillemetées, commentaires, virgules finales, hex, chaînes multi-lignes. JSONC — utilisé par VS Code — est plus strict : il ajoute seulement les commentaires au JSON standard. Aucun des deux n'est parsé universellement ; convertissez en JSON strict avant d'envoyer sur le réseau.
Taille et performance
Minifier du JSON formaté réduit la taille de 15–30 %. La compression gzip aplanit largement cette différence : pour du JSON servi en HTTP, gzip bat souvent la minification. Pour localStorage, IndexedDB, et les payloads mobiles contraints, la minification compte encore — chaque octet compte.
La validation en habitude
Quand un système rejette votre JSON, collez-le dans un validateur avant d'éditer. Neuf erreurs sur dix sont une virgule finale passée inaperçue, un guillemet simple accidentel, ou un caractère de contrôle glissé. Un validateur indique ligne et colonne exactes, épargnant la demi-heure d'inspection visuelle qu'on ferait sans lui.
