Skip to content
Retour au blog
Tutoriels

De JSON5 à JSONC : un formatage JSON plus tolérant

Découvrez les différences JSON5 vs JSONC, formatez vos fichiers de config avec commentaires et intégrez les formateurs dans votre pipeline CI — avec des exemples concrets.

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).

Qu’est-ce que JSON5 ?

JSON5 est une extension de JSON qui intègre des fonctionnalités d’ECMAScript 5.1 : clés sans guillemets, virgules finales, chaînes entre guillemets simples, commentaires et nombres hexadécimaux. Maintenu par la communauté, il rend les fichiers de configuration écrits à la main plus lisibles et tolérants que le JSON strict.

Qu’est-ce que JSONC ?

JSONC (JSON with Comments) est une extension minimale du JSON standard ajoutant les commentaires sur une ligne (//) et sur plusieurs lignes (/* */), ainsi que les virgules finales. Maintenu par Microsoft, c’est le format natif des paramètres VS Code, de tsconfig.json et d’autres fichiers de configuration TypeScript.

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.

Questions Fréquentes

Quelle est la différence entre JSON5 et JSONC ?

JSON5 étend JSON avec une syntaxe proche de JavaScript : clés sans guillemets, virgules finales, commentaires en ligne et en bloc, nombres hexadécimaux et chaînes multilignes. JSONC est plus simple — il ajoute uniquement les commentaires en ligne (//) et en bloc (/* */) au JSON standard. Choisissez JSONC quand les commentaires suffisent ; choisissez JSON5 quand vous avez besoin d’une syntaxe plus riche.

Peut-on utiliser JSON5 ou JSONC dans les API de production ?

Non — JSON5 et JSONC sont conçus pour les fichiers de configuration, pas pour l’échange de données. Les API doivent utiliser du JSON standard (RFC 8259) pour une interopérabilité maximale. Réservez JSON5/JSONC aux fichiers de configuration locaux comme tsconfig.json, .vscode/settings.json ou la configuration d’environnement où la lisibilité humaine prime sur le parsing machine.

VS Code supporte-t-il JSON5 nativement ?

VS Code supporte JSONC nativement (ses propres fichiers de paramètres utilisent JSONC), mais ne supporte pas JSON5 par défaut. Pour JSON5, installez une extension dédiée comme « JSON5 syntax » depuis le marketplace VS Code. Vous pouvez également associer les fichiers .json5 au mode de langage JSON5 dans vos paramètres.

Comment convertir du JSON5 en JSON standard ?

Utilisez le package npm json5 : JSON5.parse() lit le JSON5, puis JSON.stringify() produit du JSON standard. En CLI, exécutez npx json5 < input.json5 > output.json. Des outils en ligne comme notre JSON Formatter peuvent également valider la sortie convertie pour garantir l’exactitude.

JSONC est-il identique à JSON with Comments ?

Oui — JSONC signifie « JSON with Comments » et c’est le format utilisé par VS Code, TypeScript (tsconfig.json) et d’autres outils Microsoft. Il suit la spécification JSON standard avec pour seul ajout les commentaires // et /* */. Les parseurs suppriment les commentaires avant traitement, donc la structure de données résultante est identique au JSON standard.

Pour plus d’outils de développement en navigateur, y compris l’encodage Base64, la génération de hachage et la conversion de timestamps, consultez notre Guide essentiel des outils de développement.

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