JSON (JavaScript Object Notation) est le format texte brut qu'utilisent la plupart des API web, fichiers de configuration et exports de données. Il est assez simple pour s'apprendre en une après-midi, mais sa rigueur piège sans cesse. Ce guide couvre les règles, les pièges et les outils autour ; chaque affirmation a été exécutée dans Node et Python.
Les six types de valeur
| Type | Exemple | Remarques |
|---|---|---|
| Objet | {"a": 1} |
Paires clé-valeur non ordonnées ; les clés sont toujours des chaînes entre guillemets doubles |
| Tableau | [1, 2, 3] |
Liste ordonnée de valeurs quelconques |
| Chaîne | "hello" |
Guillemets doubles uniquement ; échappement par barre oblique inverse, \u00e9 pour Unicode |
| Nombre | -12.5e3 |
Pas de zéros de tête, pas d'hexadécimal, pas de NaN ni Infinity |
| Booléen | true, false |
Uniquement en minuscules |
| null | null |
Un « aucune valeur » explicite |
Il n'existe pas de type date : envoyez les dates sous forme de chaînes ISO 8601 comme 2026-10-03T14:30:05Z. Comparez-le aux autres formats dans JSON, YAML et XML.
Pourquoi une analyse échoue
JSON est plus strict que la syntaxe d'objet de JavaScript. Tout ceci échoue à l'analyse dans Node comme dans Python :
- une virgule finale :
{"a":1,} - des apostrophes :
{'a':1} - un zéro de tête :
{"a":01} - un commentaire :
// noteavant les données
NaN n'est pas non plus valide dans la norme et Node le refuse, mais le module json de Python accepte NaN par défaut sauf si l'on passe allow_nan=False ou un crochet parse_constant : des données qui marchent dans un langage peuvent donc échouer dans un autre. Collez le texte suspect dans le Visionneuse JSON ou le Éditeur JSON pour voir précisément où il casse, et corrigez-le dans le Formateur & Embellisseur JSON.
Pièges qui ressemblent à du JSON valide
- Grands entiers. JavaScript stocke les nombres en flottants de 64 bits :
{"id": 9007199254740993}est donc analysé comme9007199254740992dans Node (la limite des entiers exacts est 9007199254740991). Python garde la valeur complète. Envoyez les grands identifiants sous forme de chaînes. - Clés en double. La norme les laisse indéfinies ; Node et Python gardent la dernière, donc
{"a":1,"a":2}devienta = 2. - Ordre des clés. Les objets JSON n'ont pas d'ordre. Node met d'abord les clés entières (
{"b":1,"2":1,"a":1,"1":1}donne l'ordre1, 2, b, a), tandis que Python garde l'ordre d'insertion. Ne vous y fiez jamais.
Lisible ou minifié
Les espaces sont facultatifs. Le même petit objet fait 53 caractères mis en forme et 31 minifié, soit 42 % de moins ; utilisez le Minificateur et Compresseur JSON pour le transfert et le formateur pour la lecture. Gzip réduit les deux bien davantage.
Interroger avec JSONPath
JSONPath adresse des valeurs dans un document, comme XPath pour XML. Pour un store de trois livres aux prix 8,95, 12,99 et 22,99 :
| Requête | Résultat |
|---|---|
$.store.book[*].title |
A, B, C |
$.store.book[0].title |
A |
$.store.book[?(@.price < 10)].title |
A |
$..price |
8.95, 12.99, 22.99 |
$ est la racine, . entre dans une clé, [*] prend tous les éléments, [?()] filtre et .. cherche à n'importe quelle profondeur. Essayez les vôtres dans le Testeur JSONPath. JSON Schema est le compagnon pour valider la structure : par exemple {"type": "object", "required": ["id", "name"], "properties": {"id": {"type": "integer"}, "name": {"type": "string"}}} exige un id entier et un name texte.
Convertir du JSON
- Vers TypeScript :
{"id": 1, "name": "Ada", "tags": ["a", "b"], "address": {"city": "X", "zip": null}}devient
export interface User {
id: number;
name: string;
tags: string[];
address: Address;
}
export interface Address {
city: string;
zip: null;
}
avec le JSON vers TypeScript.
- Vers un tableau ou un tableur : un tableau d'objets correspond naturellement à des lignes, les clés servant d'en-tête. [{"id":1,"name":"Ada"},{"id":2,"name":"Alan"}] en TSV donne une ligne d'en-tête id, tabulation, name suivie d'une ligne par objet. Utilisez Convertisseur JSON vers TSV, Convertisseur TSV vers JSON, Convertisseur JSON vers Tableau HTML ou Convertisseur JSON en Texte ; pour d'autres formats, voyez Convertisseur JSON vers XML, Convertisseur CSV vers TSV, Convertisseur TSV vers CSV et Convertisseur Excel vers CSV.
- Comparer deux documents : le Comparateur de JSON liste ce qui a été ajouté, supprimé et modifié.
- Données de test : le Générateur de données JSON factices crée des lignes d'exemple réalistes à partir d'une graine.
Erreurs fréquentes
- Traiter JSON comme du JavaScript. Apostrophes, commentaires et virgules finales sont interdits.
- Utiliser des nombres comme identifiants. Les longs ID perdent en précision dans JavaScript ; utilisez des chaînes.
- Compter sur l'ordre des clés. Utilisez un tableau quand l'ordre compte.
- Construire du JSON à la main par concaténation. Utilisez un sérialiseur, qui échappe correctement guillemets et Unicode.