Ce qu'est un fichier JSON, avec quoi l'ouvrir et comment le modifier
L’essentiel : Du texte illisible dans le Bloc-notes aux trois façons d'ouvrir un fichier JSON, en passant par la vérification de l'intégrité après édition et la conduite à tenir face à un fichier énorme qui refuse de s'ouvrir.

L'essentiel : avant d'ouvrir un fichier JSON, vérifiez son encodage et la présence d'un BOM, puis contrôlez que la structure ne contient qu'un objet ou un tableau ; après édition, validez toujours avec un analyseur plutôt qu'en jaugeant les accolades et les virgules à l'œil.
C'est simplement un fichier texte brut avec l'extension
.json, et même le Bloc-notes peut l'ouvrir. Le vrai casse-tête n'est pas « il refuse de s'ouvrir », mais qu'une fois ouvert, vous ne voyez pas ce que vous avez cassé.
1. Ce que contient réellement un fichier JSON
Un fichier JSON valide ne peut contenir que l'une de deux choses : un objet {...} ou un tableau [...]. Rien d'autre n'est permis — pas de déclaration de variable, pas de commentaire, pas de fonction.
{
"name": "order service",
"port": 8080,
"debug": false,
"upstream": ["10.0.0.11", "10.0.0.12"],
"timeout": null
}
Il suffit de reconnaître trois choses sur le plan structurel :
| Ce que vous voyez | Signification | Concept de programmation correspondant |
|---|---|---|
Des paires clé-valeur entre { } |
Un objet ; les clés doivent être des chaînes entre guillemets doubles | Map / struct |
Une suite de valeurs entre [ ] |
Un tableau ; les types d'éléments peuvent différer | List |
| Six types de valeurs | Chaîne, nombre, booléen, null, objet, tableau | Seulement ces six ; ni dates ni entiers |
L'extension du fichier ne détermine pas le contenu : package.json, tsconfig.json et composer.json sont tous la même chose ; différents outils ont simplement convenu de lire des clés différentes.
2. Trois façons de l'ouvrir, à choisir selon le cas
Simple coup d'œil : ouvrez-le dans un navigateur. Faites glisser le fichier dans une fenêtre Chrome ou Edge et le navigateur l'affiche tel quel ; si une extension JSON Viewer est installée, il est mis en forme et rendu repliable automatiquement.
Besoin de modifier le contenu : utilisez un éditeur. VS Code, Sublime et Notepad++ proposent tous la coloration syntaxique JSON et l'appariement des accolades, et Shift + Alt + F dans VS Code met en forme le document. À noter que le Bloc-notes de Windows peut ajouter un BOM lors de l'enregistrement, ce qui peut empêcher vos modifications de configuration de prendre effet ; mieux vaut l'éviter.
Ne rien installer et juste valider : utilisez le formateur JSON en ligne. Collez le contenu et vous voyez immédiatement les numéros de ligne et de colonne, l'emplacement de l'erreur et une arborescence repliable ; copiez le résultat une fois terminé. Les données sont traitées localement dans le navigateur et ne sont pas envoyées à un serveur.
Fichiers volumineux (plusieurs dizaines de Mo ou plus) : ne les forcez pas à s'ouvrir dans un éditeur. Ouvrir un fichier JSON de 100 Mo dans VS Code figera jusqu'à vous faire douter de vos choix de vie ; inspectez d'abord la structure en ligne de commande :
# Look at the first 20 lines to confirm whether it is an array
head -n 20 data.json
# Use jq to list top-level keys without loading the whole file
jq -r 'keys[]' data.json | head
# Count the array length
jq 'length' data.json
3. Que faire quand un double-clic ouvre du texte illisible
Trois causes, chacune traitée différemment :
- C'est en réalité un fichier binaire (par exemple une archive compressée, ou un fichier de base de données exporté, portant l'extension
.json). Utilisezfile data.jsonpour voir le type réel ; ne le forcez pas à être traité comme du texte. - L'encodage n'est pas UTF-8. Du texte chinois encodé en GBK est illisible dans un environnement UTF-8. Utilisez « Réouvrir avec un encodage » de l'éditeur pour essayer GBK ; si l'affichage est correct, enregistrez en UTF-8.
- Le fichier a été chiffré ou compressé. Le symptôme est
PK(zip) ou une série de points d'interrogation au début ; ces fichiers doivent d'abord être décompressés ou déchiffrés.
4. Comment confirmer que rien n'est cassé après édition
JSON ne tolère aucune approximation : une virgule manquante, une virgule en trop ou un guillemet oublié et tout le fichier est mort, et l'emplacement de l'erreur signalé pointe souvent la ligne suivante. Il faut donc valider après édition ; ne vous fiez pas à vos yeux.
Les trois actions d'édition à haut risque, classées par fréquence des problèmes :
| Action | Conséquence courante | Comment l'éviter |
|---|---|---|
| Coller un bloc de configuration | Introduit une virgule finale ou une ponctuation pleine largeur | Formatez immédiatement après le collage |
| Intervertir manuellement l'ordre des clés | Une virgule en trop ou manquante | Utilisez les commandes de déplacement de ligne de l'éditeur ; ne retapez pas à la main |
| Supprimer le dernier élément d'un tableau | Laisse ,] derrière soi |
Vérifiez l'appariement des crochets après suppression |
La validation est simple : collez dans le validateur en ligne et cherchez le texte rouge, ou exécutez une ligne en ligne de commande :
python3 -m json.tool config.json > /dev/null && echo OK
Si OK s'affiche, le fichier est valide. Si vous voulez aussi valider les types de champs (par exemple que port soit un nombre et que name ne soit pas vide), écrire un JSON Schema est bien plus fiable que l'œil humain.
5. En quoi .json diffère de ses proches parents
| Extension | Différence | Un analyseur standard peut-il le lire |
|---|---|---|
.json |
JSON standard | Oui |
.jsonc |
Autorise les commentaires // et /* */ |
Non ; il faut d'abord retirer les commentaires |
.json5 |
Autorise commentaires, guillemets simples, clés non citées, virgules finales | Non ; un analyseur JSON5 est nécessaire |
.jsonl / .ndjson |
Un JSON indépendant par ligne ; le fichier entier n'est pas du JSON valide | Non, pas dans son ensemble ; il faut le lire ligne par ligne |
Ne vous étonnez pas de voir des commentaires dans tsconfig.json ; il est en fait traité comme un .jsonc. Donnez le même contenu à JSON.parse et il lèvera une erreur. Pour passer de l'un à l'autre, utilisez JSON5 vers JSON pour retirer commentaires et virgules finales en un clic.
6. Quand changer de format de stockage
JSON convient aux cas où « la structure n'est pas figée, les humains doivent la lire et elle circule entre langages ». Si un fichier dépasse plusieurs dizaines de Mo, que la structure des champs est stable et que vous avez besoin de requêtes conditionnelles, rester sur JSON ne fait que vous compliquer la vie — passez à SQLite, à Parquet ou chargez-le dans une base de données ; les performances de lecture/écriture varient de plusieurs ordres de grandeur. Pour les arbitrages précis, voir Analyser et diffuser de gros JSON.
FAQ
Comment inspecter un fichier JSON trop gros pour s'ouvrir ?
Ne le forcez pas à s'ouvrir dans un éditeur ; ouvrir un fichier JSON de 100 Mo dans VS Code figera jusqu'à vous faire douter de vos choix de vie. Inspectez d'abord la structure en ligne de commande : head -n 20 confirme s'il s'agit d'un tableau, jq -r 'keys[]' n'affiche que les clés de premier niveau, et jq 'length' compte la longueur du tableau. Aucune de ces commandes ne charge tout le fichier.
Pourquoi mes modifications dans le Bloc-notes empêchent-elles la configuration de prendre effet ?
Le Bloc-notes de Windows peut ajouter un BOM lors de l'enregistrement, et un fichier avec un BOM échoue à l'analyse de configuration, si bien que le contenu modifié ne prend jamais effet. L'article recommande d'utiliser des éditeurs comme VS Code, Sublime ou Notepad++, qui proposent la coloration syntaxique JSON et l'appariement des accolades. Si vous avez déjà utilisé le Bloc-notes, enregistrez à nouveau en « UTF-8 sans BOM » et réessayez.
Puis-je traiter un fichier JSON comme du JSON5 pour y ajouter des commentaires ?
Non — un analyseur standard n'autorise pas les commentaires dans un fichier .json et JSON.parse lève immédiatement une erreur. Les commentaires ont leur place dans des fichiers .jsonc ou .json5 lus par l'analyseur correspondant. Des fichiers comme tsconfig.json sont en réalité traités comme des .jsonc ; donnez le même contenu à JSON.parse et il échoue.