De JSON5 à JSONC : un formatage JSON plus tolérant
Découvrez les différences entre JSON5 et JSONC, les outils de formatage et les bonnes pratiques pour les configs, CI/CD et la collaboration en équipe.
De JSON5 à JSONC : une expérience de formatage JSON plus tolérante
Quand un simple oubli de virgule vous fait passer la nuit à déboguer un fichier JSON, il est peut-être temps de rencontrer ses cousins plus indulgents — JSON5 et JSON with Comments (JSONC).
Pourquoi avons-nous besoin d’un JSON « tolérant » ?
- Lisibilité : Le JSON strict refuse les commentaires, virgules finales, guillemets simples. Les fichiers de configuration deviennent opaques.
- Collaboration : Maintenir du JSON volumineux sans annotations rend les modifications fragiles.
- Réalisme DevOps : Kubernetes et CI/CD exigent souvent une fusion/génération dynamique ; une syntaxe flexible réduit les corrections manuelles.
JSON5 vs JSONC : comparaison
| Fonctionnalité | JSON strict | JSON5 | JSONC |
|---|---|---|---|
Commentaires // | Non | Oui | Oui |
Commentaires /* */ | Non | Oui | Oui |
| Virgules finales | Non | Oui | Oui |
| Guillemets simples | Non | Oui | Non |
| Clés sans guillemets | Non | Oui | Non |
| Signes numériques +/- | Non | Oui | Non |
| Nombres hexadécimaux/binaires | Non | Oui | Non |
| Mainteneurs de la spec | ECMA | Communauté (A. Rauschmayer) | Microsoft / VS Code |
Distinction clé : JSON5 ressemble à un littéral d’objet JavaScript, tandis que JSONC ajoute simplement des commentaires au JSON standard.
Exemples de syntaxe
JSON classique (strict)
{
"name": "Go Tools",
"features": ["Base64", "JSON Formatter"]
}
JSON5
// Configuration du projet
{
name: 'Go Tools', // guillemets simples & clés sans guillemets
features: [
'Base64',
'JSON Formatter', // virgule finale
],
version: 1.0, // nombre non-chaîne autorisé
}
JSONC
{
// Nom du projet
"name": "Go Tools",
// Liste des fonctionnalités
"features": [
"Base64",
"JSON Formatter", // virgule finale
]
}
Outils de formatage & de parsing
| Contexte | JSON5 | JSONC | Outils recommandés |
|---|---|---|---|
| Navigateur | Polyfill JSON5.parse(), Prettier >= v1.13 | Support natif VS Code settings.json | — |
| Node.js | Package npm json5 | comment-json, jsonc-parser | Formatage CLI & parsing AST |
| IDE | Extensions VS Code, WebStorm | VS Code natif, plugin WebStorm | Prettier unifie le formatage |
| CI / Lint | eslint-plugin-json5 | eslint-plugin-jsonc | Intégration Husky & lint-staged |
| Outil en ligne | Go Tools JSON Formatter (embellit & valide JSON5/JSONC) | Idem | JSON Formatter |
Formatage rapide dans VS Code
Ajouter à settings.json :
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
Puis appuyer sur Alt + Shift + F pour embellir.
Conseils pratiques & pièges
1. Conversion avant production
- Les navigateurs requièrent du JSON strict pour
JSON.parse(). - Utiliser
rollup-plugin-json5ou des scripts personnalisés pour transpiler lors du build.
2. Sécurité & fiabilité
- Une syntaxe tolérante peut dissimuler des champs indésirables ; valider avec JSON Schema ou
zodavant exposition d’API.
3. Convention d’équipe
- Documenter que les fichiers
*.json5sont réservés aux configs ; les paquets publiés doivent contenir du.jsonstrict. - Uniformiser les règles Prettier pour éviter les diffs inutiles.
4. Performance
- Le parsing JSON5/JSONC ajoute des dépendances et un léger overhead — acceptable pour CLI & dev, à mesurer en production.
Conclusion
Trouver l’équilibre entre lisibilité et rigueur est un défi classique du développement. JSON5 et JSONC améliorent l’expérience d’écriture, et avec un pipeline de build et une validation appropriés, vous pouvez profiter des avantages du « JSON tolérant » en toute sécurité.