JSON vs XML
Choisissez JSON pour les charges utiles d’API et tout ce que consomme un navigateur ou une application mobile : plus petit, typé, analysé partout. Choisissez XML pour les données en forme de document, l’intégration d’entreprise et les interfaces qui exigent des espaces de noms ou une validation XSD stricte. Aucun des deux n’est obsolète : JSON règne sur le fil, XML règne sur les documents, et les convertisseurs de cette page font le pont dans les deux sens.
JSON vs XML en clair
Pendant quinze ans, XML a été la réponse par défaut à presque toute question de données — services SOAP, flux RSS, documents Office, configuration de build. JSON a ensuite raflé la couche API presque entièrement, et les deux formats vivent depuis dans une division du travail confortable. Le cadrage en rivalité cache la vraie histoire : ils ont été bâtis pour des métiers différents. XML descend du SGML et est un langage de balisage pour documents ; JSON est un format d’échange de données dont la grammaire tient sur une carte d’index. La plupart des déceptions viennent de ce qu’on demande à l’un de faire le métier de l’autre.
Les différences quotidiennes sont concrètes. XML balise chaque valeur d’une balise ouvrante et d’une balise fermante, ce qui double à peu près le balisage par champ ; JSON enveloppe les valeurs de guillemets et de virgules. XML est typé chaîne — tout est texte jusqu’à ce qu’un schéma dise le contraire — tandis que JSON déclare nombres, booléens et null dans la syntaxe même. XML a des attributs, des espaces de noms et du contenu mixte ; JSON a des clés, des tableaux, et rien de tout cela. Chacune de ces décisions se propage aux schémas, à l’outillage et à la taille de charge utile.
Cette page garde la comparaison là où elle mord : syntaxe et taxe de balisage, typage, schémas et espaces de noms, taille et flux. Quand il faut passer de l’un à l’autre, les deux sens ont leurs convertisseurs sur ce site — et comme tout ici, ils analysent et produisent entièrement dans votre navigateur.
Besoin de remettre une charge utile JSON à un système qui ne parle qu’XML ? Le convertisseur JSON vers XML fait correspondre clés et tableaux à des éléments dans votre navigateur, sans aucun envoi.
Vous héritez d’un flux d’ancienne génération ou d’une réponse SOAP ? Le convertisseur XML vers JSON le remodèle en JSON localement, avant même que votre code ne touche une balise.
Origines : un langage de balisage contre un format de données
L’ancêtre d’XML est le SGML, et son objectif de conception était de baliser des documents : de la prose mêlant paragraphes, emphase et structure. Voilà pourquoi XML, seul des deux, prend en charge le contenu mixte — du texte avec du balisage en ligne comme <title>Learning <em>XML</em></title> — et pourquoi il a développé attributs, références d’entités et un modèle de traitement lourd. JSON a été extrait des littéraux d’objets JavaScript vers 2001 pour exactement un but : faire circuler des données structurées entre programmes avec la plus petite grammaire possible. Pas de contenu mixte en JSON, pas de machinerie d’entités, pas d’arbre documentaire — objets, tableaux et quatre types scalaires composent l’univers entier.
Syntaxe : la taxe de balisage, les attributs et le tableau absent
Chaque élément XML s’ouvre et se ferme, donc une valeur simple coûte deux balises : <price>19.99</price>. XML propose une orthographe alternative — <price currency="EUR">19.99</price> — et le choix attribut ou élément alimente le débat depuis deux décennies sans réponse universelle. JSON a exactement une écriture pour une paire clé/valeur et une pour une liste. Point crucial : JSON a des tableaux natifs ; XML n’a aucun type tableau. Une liste s’exprime en répétant un élément, ce qui oblige chaque outil JSON vers XML à s’accorder sur une convention pour nommer et envelopper les éléments répétés.
| Aspect | JSON | XML |
|---|---|---|
| Grammaire | Une page (RFC 8259) | XML 1.0 plus espaces de noms, infoset et machinerie DTD |
| Conteneurs | Objets et tableaux | Éléments ; les tableaux sont des éléments répétés |
| Typage | Nombres, booléens et null sont natifs | Toutes les valeurs sont du texte jusqu’à ce qu’un schéma les type |
| Attributs | Aucun — une seule écriture par paire | Attribut ou élément, un choix permanent |
| Espaces de noms | Aucun ; seulement des conventions de préfixe | Mécanisme xmlns intégré pour les vocabulaires fusionnés |
| Commentaires | Aucun, retirés volontairement | Oui, <!-- --> n’importe où dans l’arbre |
| Langage de schéma | JSON Schema | XSD, DTD, Relax NG |
| Contenu mixte | Inexprimable | Natif — du texte entrelacé de balisage |
Schémas et espaces de noms : là où XML se justifie encore
XSD est l’avantage discret d’XML en entreprise : un langage de schéma mature, avec types dérivés, contraintes de cardinalité, facettes de motif et deux décennies d’outillage capable de valider un document et de signaler précisément quel élément a violé quelle règle. JSON Schema poursuit le même but sous une autre forme — il est expressif, prend en charge la logique conditionnelle et est devenu le langage de contrat de facto des API modernes — mais sa longue histoire de brouillons fait que l’outillage varie davantage dans ce qu’il accepte. Les deux écosystèmes peuvent être stricts ; celui d’XML est simplement plus ancien.
Les espaces de noms sont l’autre trait durable d’XML. Une page XHTML peut embarquer du SVG et du MathML sans collision de clés parce que chaque vocabulaire porte son propre URI. JSON n’a pas de mécanisme équivalent — les collisions de noms s’évitent par convention, ou par des conceptions en couches comme JSON-LD qui attachent le contexte explicitement.
Taille, flux et critères de choix
À données égales, les charges utiles XML sont généralement plus grosses : les balises fermantes à elles seules doublent à peu près le balisage par élément, et les styles lourds en attributs ajoutent encore. Les deux formats se compressent bien avec gzip — la redondance d’XML est très compressible — mais le surcoût de base ne se referme que rarement entièrement. Côté flux, l’écosystème de parseurs d’XML est plus profond : les parseurs push SAX et StAX ont été conçus pour des documents trop gros pour la mémoire, et chaque plateforme en embarque un. Des parseurs JSON en flux existent et sont excellents, mais l’analyse d’un document entier reste le défaut commun.
Choisissez JSON pour tout ce qu’échangent deux programmes : API web et mobiles, logs structurés, charges utiles entre services. Choisissez XML quand une spécification l’impose — piles SOAP, chaînes d’édition, formats Office, nombre de normes de santé et de finance — ou quand vous avez besoin de validation XSD et d’espaces de noms sur le fil. La recommandation s’inverse proprement : du JSON qui s’infiltre dans un pipeline de documents veut généralement devenir XML, et une API d’ère SOAP qui expose un JSON propre est un gain de migration, pas une trahison.
Questions fréquentes
JSON remplace-t-il XML ?
Il l’a délogé d’un territoire, pas de tous. JSON tient désormais la couche API — REST, mobile, navigateur — tandis qu’XML reste solidement installé là où les documents ou les normes dominent : fichiers Office et EPUB, graphiques SVG, entreprises SOAP, et spécifications d’édition, de santé et de finance qui l’imposent. Apprendre les deux garde son intérêt ; convertir entre eux est de la routine.
Pourquoi XML est-il plus gros que JSON à données égales ?
Deux raisons structurelles. Chaque élément exige une balise fermante, donc chaque valeur paie le balisage deux fois, et XML n’a pas de tableau natif — les listes deviennent des éléments répétés avec leurs propres balises. La compression réduit l’écart parce que les balises répétées se compressent extrêmement bien en gzip, mais les tailles brutes diffèrent assez pour que les API de l’ère mobile se soient standardisées sur JSON.
Convertir du XML ou du JSON ici envoie-t-il mes données ?
Non. Les deux convertisseurs analysent et produisent dans votre onglet, sans serveur impliqué — il n’existe aucun point d’envoi, et la Content-Security-Policy du site limite l’accès réseau à elle-même. Ouvrez le panneau Network de DevTools pendant une conversion : aucune requête sortante ne transporte votre charge utile.
Les valeurs XML doivent-elles vivre dans des attributs ou des éléments enfants ?
Une règle praticable : les attributs pour les métadonnées sur l’élément — identifiants, types, unités, langue — et les éléments enfants pour le contenu, en particulier tout ce qui est long, ordonné, répété ou lui-même balisé. Les attributs ne peuvent pas se répéter, ne peuvent pas porter de structure et sont invisibles au contenu mixte, voilà pourquoi toute liste de choses doit être des éléments.
La validation XSD est-elle plus forte que JSON Schema ?
Plus forte en maturité, pas en principe. XSD a vingt ans d’outillage stable, des types dérivés et des règles de séquençage strictes sur lesquelles les entreprises s’appuient. JSON Schema est expressif — conditions, propriétés à motifs, définitions réutilisables — et dominant pour les contrats d’API modernes. Choisissez celui avec lequel votre chaîne d’outils valide déjà ; changer de format ne supprime pas le besoin d’un schéma.
Comment les tableaux JSON deviennent-ils des éléments XML ?
Parce qu’XML manque d’un type tableau, les convertisseurs font correspondre un tableau à des éléments enfants répétés sous un enveloppeur, ou à des frères partageant un même nom — la convention varie selon l’outil et compte énormément aux allers-retours. Les convertisseurs de ce site documentent la correspondance exacte qu’ils emploient, si bien qu’un document passé dans les deux sens reste prévisible.
Où puis-je lire les normes citées ici ?
Quels outils liés devriez-vous utiliser ensuite ?
- Convertir JSON en XMLConvertit avec attributs et noms que le XML accepteOuvrir
- Convertir XML en JSONConvertit en gardant attributs et listes à un seul élémentOuvrir
- Formater du JSONIndente, trie les clés et supprime les commentairesOuvrir
- Valider du JSONVérifie la syntaxe avec ligne et colonne exactes, puis répareOuvrir
- Qu’est-ce que le JSONGuide en langage clairOuvrir
- Outils JSONComparez, formatez, validez et explorez des documents JSON.Ouvrir