Skip to content
Retour au blog
Tutoriels

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.

Go Tools Team 7 min de lecture

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 strictJSON5JSONC
Commentaires //NonOuiOui
Commentaires /* */NonOuiOui
Virgules finalesNonOuiOui
Guillemets simplesNonOuiNon
Clés sans guillemetsNonOuiNon
Signes numériques +/-NonOuiNon
Nombres hexadécimaux/binairesNonOuiNon
Mainteneurs de la specECMACommunauté (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

ContexteJSON5JSONCOutils recommandés
NavigateurPolyfill JSON5.parse(), Prettier >= v1.13Support natif VS Code settings.json
Node.jsPackage npm json5comment-json, jsonc-parserFormatage CLI & parsing AST
IDEExtensions VS Code, WebStormVS Code natif, plugin WebStormPrettier unifie le formatage
CI / Linteslint-plugin-json5eslint-plugin-jsoncIntégration Husky & lint-staged
Outil en ligneGo Tools JSON Formatter (embellit & valide JSON5/JSONC)IdemJSON 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-json5 ou 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 zod avant exposition d’API.

3. Convention d’équipe

  • Documenter que les fichiers *.json5 sont réservés aux configs ; les paquets publiés doivent contenir du .json strict.
  • 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é.

Références

Articles connexes

Voir tous les articles