Comment convertir entre JSON et XML

JSON vers XML transforme un objet ou un tableau JSON en document XML ; XML vers JSON relit un document XML sous forme de JSON. Les deux sens s’exécutent dans la page : rien de ce que vous collez n’est envoyé, et le résultat s’affiche dans le panneau sous les boutons.

Les deux boutons d’exemple chargent le même petit catalogue dans les deux formats : convertir l’exemple JSON donne l’exemple XML, et reconvertir cet exemple XML redonne l’exemple JSON.

  1. Chargez un exemple avec Exemple XML ou Exemple JSON, ou collez votre propre objet JSON, tableau JSON ou document XML dans la zone de texte.
  2. Cliquez sur JSON vers XML ou XML vers JSON. La ligne d’état au-dessus du résultat indique l’élément racine et le nombre d’éléments et d’attributs, ou explique pourquoi rien n’a été écrit.
  3. Si l’entrée est illisible, le message indique le caractère pour le JSON ou la ligne et la colonne pour le XML, et le résultat précédent est effacé pour ne rien laisser d’obsolète à l’écran.
  4. Formater JSON indente la sortie JSON de deux espaces lorsqu’il est coché, et la laisse sur une seule ligne compacte sinon ; la sortie XML est toujours indentée. Copier le résultat copie le texte et Effacer vide la zone de texte.

Ce que la conversion fait de vos données

Comment JSON devient XML

Le document reçoit exactement un élément racine. Une seule clé de premier niveau devient cet élément — {"user":{"name":"Ann"}} s’écrit <user><name>Ann</name></user> —, alors que plusieurs clés, un tableau de premier niveau et une clé unique contenant un tableau sont enveloppés dans <root> ; les éléments de tableau sans nom propre s’écrivent <item>.

Dans un élément, une clé devient un élément enfant et un tableau répète son élément une fois par entrée. Une clé qui commence par - devient un attribut et #text devient le texte de l’élément : {"a":{"-x":"1","#text":"hi"}} s’écrit <a x="1">hi</a>, la forme que produit le sens XML vers JSON, ce qui permet d’enchaîner les deux sens. null et "" donnent <name />.

Les noms sont réparés plutôt qu’écrits incorrectement : un espace, < ou & dans une clé, ou une clé qui commence par un chiffre, s’écrit avec un tiret bas, et la ligne d’état indique combien de noms ont été modifiés. Le balisage présent dans une valeur est échappé, et les guillemets, retours à la ligne et tabulations d’une valeur d’attribut s’écrivent &quot;, &#10; et &#9; pour que le document reste valide.

Comment XML devient JSON

Les attributs reviennent avec le préfixe -, un élément qui ne contient que du texte devient une chaîne, un élément avec des enfants devient un objet, et un nom présent plusieurs fois devient un tableau : <r><i>1</i><i>2</i></r> donne {"r":{"i":["1","2"]}}, alors qu’un seul <i> reste une chaîne. XML ne connaît pas de types : les valeurs arrivent donc sous forme de chaînes — 24.90 en XML devient "24.90" en JSON.

Un élément sans contenu devient une chaîne vide, le texte dans un élément est conservé tel qu’il est écrit, espaces et retours à la ligne compris, et l’indentation entre éléments est ignorée. Les commentaires sont ignorés, les sections CDATA sont lues comme du texte, et le texte qui partage un élément avec des enfants est regroupé dans une clé #text.

Confidentialité, taille et limites

La conversion s’exécute dans la page : réseau bloqué, elle fonctionne toujours et n’envoie aucune requête — un document qui ne doit pas quitter votre machine peut donc être converti ici. Les résultats jusqu’à 120 000 caractères sont colorés, les plus longs sont affichés en texte brut : 1 000 lignes (45 Ko de JSON vers 99 Ko de XML) demandent environ 0,8 seconde avec coloration, tandis que 5 000 lignes (233 Ko vers 503 Ko, puis 618 Ko de JSON au retour) demandent environ 0,2 seconde au total, mesuré dans Chrome sur cette page.

C’est un convertisseur de format, pas un outil de schéma : aucune validation XSD ou DTD, aucune gestion des espaces de noms (un deux-points dans un nom s’écrit avec un tiret bas) et aucune inférence de type. Un document imbriqué sur des milliers de niveaux est refusé avec un message plutôt que de laisser un document incomplet à l’écran.

Outils récents :