Outils
Guides

Convertisseur JSON ↔ XML

JSON

Convertit entre JSON et XML. Les objets imbriqués sont enveloppés sous un élément racine configurable.

100 % côté client Sans backend
Entrée
Sortie
Sur cette page

Qu’est-ce qu’un convertisseur JSON ↔ XML ?#

JSON et XML sont deux manières différentes d’écrire des données structurées, et elles ne sont pas interchangeables au niveau syntaxique — l’un utilise accolades et crochets, l’autre des balises à chevrons. Un convertisseur entre les deux ne « compresse » ni n’« encode » ; il réexprime la même arborescence de valeurs dans l’autre notation, afin qu’un système qui ne parle que XML puisse consommer des données arrivées en JSON, et inversement.

La correspondance est essentiellement mécanique, mais comporte deux écueils bien connus. Premièrement, XML exige exactement un élément racine enveloppant tout, alors que le JSON laisse volontiers le niveau supérieur être un objet ou un tableau brut — passer de JSON à XML signifie donc toujours choisir un nom pour cette enveloppe extérieure. Deuxièmement, les éléments XML peuvent porter des attributs (<a id="7">), dont JSON n’a pas d’équivalent natif ; la convention courante consiste à les ranger sous des clés préfixées par @, et tout texte voisin des attributs sous une clé #text.

Cette page convertit dans les deux sens, dans le navigateur : JSON vers XML (en enveloppant votre valeur sous un élément racine que vous nommez), et XML vers JSON (en dépaquetant les attributs dans des clés @ et, par défaut, en retirant la racine extérieure pour que vous retrouviez la valeur intérieure).

Mode d’emploi#

  1. Choisissez le sens avec le commutateur JSON → XML / XML → JSON en haut à gauche de la barre d’outils.
  2. Saisissez ou collez votre texte dans le panneau Entrée à gauche.
    • JSON → XML attend du JSON valide. Toute valeur de premier niveau est enveloppée sous l’élément racine.
    • XML → JSON attend un document XML bien formé. L’élément extérieur unique est automatiquement dépaqueté, de sorte que vous obtenez son contenu intérieur en JSON.
  3. En mode JSON → XML, renseignez le champ Élément racine (par défaut root) pour nommer la balise enveloppe — par exemple user, feed, response. XML imposant une racine unique, ce nom est toujours requis.
  4. Le résultat apparaît en direct dans le panneau Sortie. Cliquez sur Copier pour le récupérer.
  5. Exemple charge un petit document adapté au sens courant ; Effacer réinitialise les deux panneaux.

Principales fonctionnalités#

  • Les deux sens, un seul outil. Un commutateur bascule entre JSON-vers-XML et XML-vers-JSON, le panneau d’entrée étant reciblé automatiquement.
  • Élément racine configurable. XML ne pouvant exister sans un élément extérieur unique, vous nommez l’enveloppe ; le convertisseur gagne l’enrobage pour toute forme de premier niveau JSON.
  • Déclaration XML correcte. La sortie JSON-vers-XML commence par le prologue standard <?xml version="1.0" encoding="UTF-8"?> et est mise en forme avec une indentation de deux espaces.
  • Aller-retour des attributs. XML-vers-JSON préserve les attributs des éléments sous des clés préfixées par @, et le texte voisin des attributs est conservé sous #text, afin que rien ne soit silencieusement abandonné.
  • Analyse sensible aux nombres. XML est tout texte ; l’analyseur reconvertit en nombres JSON les valeurs d’élément qui en ont l’allure (donc <age>36</age> devient 36, et non "36").

Exemple détaillé#

JSON → XML#

Avec le sens réglé sur JSON → XML et la racine nommée root, chargez Exemple :

{
  "name": "Ada",
  "age": 36,
  "skills": ["math", "logic"]
}

Le convertisseur enveloppe tout sous <root> et déploie le tableau comme XML l’exige — chaque entrée devient son propre élément avec la même balise :

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>Ada</name>
  <age>36</age>
  <skills>math</skills>
  <skills>logic</skills>
</root>

Changez le champ Élément racine pour person et l’enveloppe devient <person> / </person> à la place — la structure intérieure est intacte.

XML → JSON#

Basculez sur XML → JSON et chargez Exemple :

<?xml version="1.0"?>
<root><name>Ada</name><age>36</age></root>

Le <root> extérieur est retiré, et les éléments intérieurs deviennent des propriétés JSON, 36 étant reconnu comme un nombre :

{
  "name": "Ada",
  "age": 36
}

Les attributs sont également préservés. Un élément comme <a id="7">label</a> produit { "@id": "7", "#text": "label" } — l’attribut sous @id, le texte sous #text, sans perte.

FAQ#

Pourquoi mon tableau JSON devient-il des éléments XML répétés au lieu d’une seule enveloppe contenant les éléments ?#

C’est ainsi que XML représente une liste : il n’existe pas de construction « tableau », donc chaque entrée doit être son propre élément avec le même nom de balise. Un tableau JSON ["math", "logic"] sous la clé skills devient donc deux éléments frères <skills>, et non un <skills> unique contenant des enfants. C’est la correspondance standard, compatible avec les schémas — les consommateurs XML s’y attendent.

En XML → JSON, où est passé mon élément extérieur ?#

Le convertisseur dépaquète automatiquement la racine unique. XML impose exactement un élément de premier niveau, mais en JSON cette enveloppe est généralement redondante — <root><name>Ada</name></root> ne véhicule dans root aucune information dont JSON ait besoin. La retirer vous donne directement la valeur intérieure significative. Si vous avez vraiment besoin de conserver la racine, gardez-la comme un élément normal et accédez-y par son nom.

Pourquoi 36 est-il un nombre dans la sortie, pas une chaîne ?#

XML n’a pas de type nombre distinct — tout ce qui se trouve entre les balises est du texte. L’analyseur applique une conversion numérique, donc un élément dont le texte ressemble à un nombre (36, 3.14) revient en nombre JSON. C’est pratique pour des données courantes, mais cela signifie aussi qu’une valeur comme un code produit <code>007</code> perdra ses zéros initiaux — stockez de telles valeurs comme attributs ou acceptez-les comme chaînes.

Peut-il convertir n’importe quel document XML ?#

Du XML bien formé, oui, y compris les espaces de noms dans les balises, les attributs, les éléments auto-fermants et les déclarations. Il ne résout pas les DTD, ne valide pas contre un schéma et ne va pas chercher d’entités externes — le traitement est local et textuel uniquement, ce qui signifie aussi qu’il est sûr de coller des documents en lesquels vous n’avez pas une confiance aveugle.