Données JSON (.json)

RFC Standard

JavaScript Object Notation (JSON) est un format textuel léger et lisible par l'homme destiné à l'échange de données, totalement indépendant du langage et universellement utilisé pour les API web.

Convertir JSON en HTML

Outil de conversion gratuit de JSON vers HTML dans le navigateur. Convertissez des fichiers instantanément sur votre appareil.

Compresser des fichiers JSON en ligne

Privé - les fichiers ne quittent jamais votre appareil

Inspection et métadonnées

Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers JSON en inspectant leur séquence initiale d'octets binaires :

Sélectionnez ou déposez des fichiers ici

Privé - les fichiers ne quittent jamais votre appareil

ou coller Ctrl+V
Garantie de confidentialité sans transmission réseau : 0 octet envoyé vers des serveurs externes. Tout le traitement a eu lieu localement dans le bac à sable de votre navigateur.

Signature d'en-tête au niveau des octets (octets magiques)

Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers JSON en inspectant leur séquence initiale d'octets binaires :

SIGNATURE HEXADÉCIMALE (DÉCALAGE 0) :

7B or 5B

REPRÉSENTATION ASCII : { or [

Normalisation : RFC 8259 / ECMA-404 / ISO/IEC 21778

Spécifications techniques

Architecture de conteneurFormat d'échange de données léger, textuel et indépendant du langage
CompressionCompression du texte avec Gzip, Brotli ou Zstandard (réduction habituelle de 80 % à 90 %)
Ordre des octetsUnicode encodé en UTF-8 (il est recommandé de ne pas utiliser d’indicateur d’ordre des octets (BOM))
Espaces colorimétriquesNon applicable
Canaux et structureSix types de données de base : objet, tableau, chaîne de caractères, nombre, booléen, null
Dimensions maximalesSans limite prédéfinie ; les limites dépendent uniquement de la mémoire de l'analyseur et de la longueur maximale des chaînes
TransparenceNon applicable
Prise en charge du traitement en continuLe NDJSON (JSON délimité par des sauts de ligne) et JSON Lines permettent de traiter les données progressivement et en continu.

Matrice de comparaison technique : JSON face aux concurrents

Attribut techniqueJSON (Actuel)YAMLXMLProtocol Buffers
Complexité de la syntaxeMinimale (6 types, syntaxe stricte)Élevée (basée sur l'indentation, spécification complexe)Élevée (balises de fermeture verbeuses, espaces de noms)Format binaire de transmission défini par schéma
Vitesse d’analyse syntaxiqueExtrêmement rapide dans tous les langages modernesLente (analyse d'indentation complexe)Modérée à lente (construction lourde du DOM)Ultra-rapide (désérialisation binaire sans copie)
Commentaires pris en chargeNon (délibérément exclus pour éviter la prolifération des métadonnées)Oui (commentaires #)Oui (commentaires <!-- -->)Oui dans les fichiers .proto
Taille de la charge réseauTexte compact (taux de compression gzip très élevé)Texte compactTexte verbeux (forte répétition de balises)Binaire ultra-compact

Modes de corruption courants et guide de restauration hexadécimale

SyntaxError : jeton , inattendu dans le JSON à la position X.

Cause initiale: Virgule finale après le dernier élément d'un tableau ou d'un objet, ce qui est strictement illégal dans le format JSON de la RFC 8259.

Récupération: Supprimez les virgules finales des clés d'objets et des entrées de tableaux avant de les transmettre à JSON.parse().

SyntaxError : jeton ' inattendu dans le JSON.

Cause initiale: Chaînes ou clés entourées de guillemets simples ('') au lieu de guillemets doubles ("").

Récupération: Remplacez toutes les chaînes et clés entre guillemets simples par des chaînes standard entre guillemets doubles.

Analyse de sécurité et vecteurs d'attaque de l'analyseur

JSON est exclusivement textuel et à l'abri d'une exécution directe de code, mais l'analyse de données JSON non fiables peut entraîner une pollution de prototype (Prototype Pollution), des attaques ReDoS ou un épuisement de la mémoire.

Vecteurs d’attaque connus

  • Pollution de prototype : des clés nommées '__proto__' ou 'constructor' modifient Object.prototype dans les applications JavaScript.
  • Déni de service par dépassement de pile via des structures JSON profondément imbriquées (par exemple 10 000 crochets ouvrants).
  • Perte de précision numérique : les nombres JavaScript supérieurs à 2^53 - 1 (9 007 199 254 740 991) perdent silencieusement en précision.

Bonnes pratiques de défense: N’évaluez jamais du JSON avec eval(). Utilisez JSON.parse() et filtrez les propriétés « __proto__ » dans les fonctions de fusion récursive d’objets.

Origines historiques et jalons

2017La norme RFC 8259 officialise l'UTF-8 comme le seul encodage de caractères obligatoire pour JSON.
2013ECMA-404 définit la syntaxe JSON, utilisée par de nombreux langages de programmation et plateformes.
2001Douglas Crockford formalise JSON pour permettre l’échange de données sans état entre navigateur et serveur.

Principaux avantages

  • Structure textuelle lisible par l'homme, auto-descriptive et concise.
  • Prise en charge native de l'analyse syntaxique intégrée aux moteurs JavaScript (JSON.parse) et présente dans tous les principaux langages de programmation.
  • Une spécification stricte empêche toute exécution de code arbitraire.

Limites techniques

  • Aucun support pour les commentaires, les virgules finales ou les références d'objets circulaires.
  • Pas de types binaires natifs (les données binaires doivent être encodées en base64, ce qui augmente la taille de 33 %).
  • La sérialisation est moins efficace que celle de formats binaires comme Protocol Buffers ou MessagePack.

Faits intéressants

  • Douglas Crockford a ajouté la clause de licence logicielle « Le logiciel doit être utilisé pour le Bien et non pour le Mal » aux outils JSMin JSON d'origine.
  • JSON est un sous-ensemble strict de la syntaxe JavaScript, mais jusqu'à ES2019, les caractères bruts non échappés U+2028 et U+2029 étaient valides en JSON mais invalides dans les chaînes de caractères JavaScript.
  • Douglas Crockford a découvert que les premiers navigateurs pouvaient transformer directement du JSON en objets avec la fonction eval() native de JavaScript, avant la normalisation de l’API JSON.parse() dans ECMAScript 5.

Foire aux questions techniques

Pourquoi JSON ne permet-il pas les commentaires ?

La grammaire JSON n’autorise pas les commentaires. Les implémentations peuvent traiter différemment les extensions et les données propres aux applications ; le format seul ne garantit donc pas l’interopérabilité.

Comment stocker des entiers 64 bits en JSON sans perdre en précision ?

Le type Number natif de JavaScript est un nombre à virgule flottante en double précision IEEE 754, qui ne prend en charge précisément que les entiers jusqu'à 2^53 - 1. Les entiers 64 bits (tels que les identifiants de base de données ou les horodatages) doivent être sérialisés sous forme de chaînes de caractères (par exemple '1234567890123456789') en JSON.

Quelle est la différence entre JSON et NDJSON / JSON Lines ?

Le JSON standard place toute la charge utile dans un seul objet ou tableau racine. Les analyseurs doivent donc charger tout le texte avant de le traiter. Le NDJSON (JSON délimité par des sauts de ligne) sépare chaque enregistrement JSON valide par un caractère de nouvelle ligne (\n), ce qui permet de traiter en continu de grands jeux de données de plusieurs gigaoctets sans consommer trop de mémoire.

Conversions associées à JSON

JSON vers HTML

La conversion de données JSON en code source HTML transforme des paires clé-valeur brutes et structurées en documents web lisibles, prêts à être affichés dans le navigateur.

HTML vers JSON

La conversion de code source HTML en données JSON transforme des documents web lisibles en paires clé-valeur structurées pour leur traitement automatisé et leur intégration via une API.

SQL vers JSON

La conversion d'un script texte d'export SQL en un export de données JSON transforme des tables de bases de données relationnelles rigides en objets imbriqués flexibles pour les applications web modernes.

JSON vers SQLITE

La transformation de fichiers texte JSON non structurés en bases de données relationnelles SQLite structurées permet une indexation et des requêtes rapides sur de grands volumes de données.

ASE vers JSON

La conversion de fichiers Adobe Swatch Exchange en structures JSON de couleurs transforme des palettes de conception binaires en objets texte lisibles par les applications web modernes.

JSON vers ASE

La conversion de données textuelles JSON de couleurs en nuanciers binaires Adobe ASE fait le lien entre les jetons de conception web et les logiciels professionnels de mise en page pour ordinateur.

GPL vers JSON

La conversion de fichiers texte de palettes GIMP en structures JSON de couleurs permet aux applications web de lire directement les nuanciers sans scripts d'analyse complexes.

JSON vers CSS

La conversion de fichiers JSON de couleurs structurés en variables CSS transforme des objets de données bruts en propriétés de style natives pour les sites web.