Guides Développement

Comment fonctionne JSON

Les six types de valeur JSON, pourquoi l'analyse échoue, pièges des grands entiers et de l'ordre des clés, JSONPath et conversion en TypeScript, TSV, etc.

Dernière vérification:

AdSense Placeholder
Slot: header_reference_page
Sur cette page

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 : // note avant 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é comme 9007199254740992 dans 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} devient a = 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'ordre 1, 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.

Essayez ces outils

Voir aussi

  • Glossaire JSON
    Le JSON (JavaScript Object Notation) est un format de texte léger pour les données structurées, composé d'objets, de tableaux, de chaînes.
  • Glossaire YAML
    Le YAML est un format de données lisible par les humains qui utilise l'indentation plutôt que des accolades.
  • Glossaire CSV
    Le CSV (valeurs séparées par des virgules) est un format de texte brut pour les tableaux.
  • Guide Comment fonctionnent les balises meta SEO
    Titre, description, canonical, hreflang, robots.txt.
  • Glossaire JSONPath
    JSONPath est un langage de requête pour extraire des valeurs d'un document JSON, comme XPath le fait pour XML.

Questions fréquemment posées

Les causes habituelles sont une virgule finale, des apostrophes, un commentaire, une clé sans guillemets ou un zéro de tête dans un nombre. Un formateur ou un afficheur indique la position exacte.

AdSense Placeholder
Slot: footer_leaderboard