Convertissez JSON et XML localement
Convertissez JSON en XML ou XML en JSON dans votre navigateur. Utilisez attributs et éléments répétés, et vérifiez les changements.
Espace de travail de l’outil
Utilisez @attributes pour les attributs chaînes et #text pour les feuilles. Les tableaux donnent des éléments répétés. Noms ASCII ; pas d’espaces de noms ni de contenu mixte. Lire l’explication complète du modèle
Collez du texte ou choisissez un fichier local UTF-8. Cliquez sur Convertir pour le traiter.
Prêt à recevoir du texte.
Web Workers indisponibles. La conversion ne peut pas fonctionner ici ; l’entrée reste locale.
Erreurs et avertissements de conversion
Certains détails ont été omis ; la cause de l’erreur est conservée.
Copie et téléchargement utilisent la sortie actuelle complète.
Modèle et sous-ensemble pris en charge
Utiliser la propriété racine unique exige un objet JSON avec une propriété : son nom devient la racine XML. Envelopper avec un nom racine ajoute la racine choisie au contenu. Un tableau racine utilise le nom d’élément ; les tableaux de propriété répètent leur nom. Tableaux non vides et sans imbrication directe. @attributes est un objet de valeurs chaînes ; #text est une chaîne permise seulement sans enfants, même vide ou composée d’espaces. Les attributs XML reviennent sous @attributes ; une feuille avec attributs inclut #text. Les enfants contigus de même nom deviennent des tableaux ; les groupes entrelacés sont rejetés pour garder l’ordre. Une feuille XML vide sans attributs devient une chaîne JSON vide ; avec attributs elle garde #text="" dans un objet. Nombres et booléens perdent le type ; null, objets vides et tableaux uniques perdent l’intention. Sous-ensemble XML 1.0 : noms ASCII de 1–64 caractères, sans préfixe xml, espaces de noms, DTD ni instructions de traitement. Seules entités prédéfinies et références numériques sont décodées une fois. Commentaires, délimiteurs CDATA, déclaration et espaces de présentation sont omis avec avertissements. Espaces des feuilles conservés ; fins de ligne XML et espaces littéraux d’attributs normalisés. Aucune déduction de types ni réparation automatique.
Texte et attributs XML restent des chaînes, y compris 00123. La racine est conservée ; aucun type JSON n’est déduit.
XML perd les types JSON et l’intention des tableaux à un élément. Aucun aller-retour universel : null et objet vide peuvent devenir le même élément vide. XML → JSON conserve les chaînes et la vraie racine.
Limites
Entrée : 1 000 000 unités UTF-16 / 2 000 000 octets UTF-8. Fichier : 2 000 000 octets. Profondeur JSON/XML : 100/40. Sortie : 2 000 000 unités UTF-16 / 4 000 000 octets UTF-8.
Traitement local. Les documents ne sont ni envoyés, ni journalisés, ni conservés.
Convertir un catalogue JSON en XML
Collez du JSON ou chargez un fichier local .json, choisissez JSON → XML, puis cliquez sur Convertir. Dans cet exemple, l’unique propriété racine devient l’élément XML catalog. Les deux articles deviennent des éléments item, et @attributes fournit leurs attributs.
{"catalog":{"@attributes":{"id":"00123"},"item":[{"@attributes":{"code":"a"},"#text":"uno & dos"},{"@attributes":{"code":"b"},"#text":"tres"}]}}
<catalog id="00123"><item code="a">uno & dos</item><item code="b">tres</item></catalog>
L’option par défaut Utiliser la propriété racine unique exige un objet ayant une seule propriété ordinaire. Pour les autres entrées, choisissez Envelopper avec un nom racine : un élément nommé initialement root entourera les données. Pour un tableau à la racine, chaque élément porte le nom par défaut item ; ce réglage ne renomme pas les tableaux contenus dans des propriétés. La sortie peut être compacte ou indentée avec 2 ou 4 espaces.
Utilisez @attributes pour un objet dont les valeurs sont des chaînes. Utilisez #text pour le texte d’un élément sans enfants ; sa valeur doit aussi être une chaîne, même vide. Les tableaux répètent le nom de leur propriété. Les tableaux vides ou directement imbriqués dans d’autres tableaux ne sont pas acceptés.
Convertir XML en JSON
Choisissez XML → JSON, collez du XML ou ouvrez un fichier .xml, puis lancez la conversion. La racine XML reste une propriété JSON. Les attributs apparaissent sous @attributes.
Le texte et les attributs restent des chaînes : 00123 conserve ses zéros initiaux et true ne devient pas un booléen. Un élément sans attributs ni enfants devient une chaîne. S’il possède des attributs mais pas d’enfants, il inclut aussi #text, même lorsque le texte est vide.
Les éléments consécutifs de même nom forment un tableau. Une séquence a/b/a est refusée, car regrouper les deux éléments a changerait leur ordre.
Ce qui peut changer lors d’un aller-retour
Lisez les avertissements avant d’utiliser le résultat. XML ne conserve pas toutes les distinctions du JSON :
| Entrée JSON | Après conversion en XML puis retour en JSON |
|---|---|
| Nombre ou booléen | Une chaîne contenant son texte |
null ou objet vide {} |
Une chaîne vide |
| Tableau d’un seul élément | Une valeur sans le tableau qui l’entourait |
Objet contenant uniquement #text |
Une chaîne |
Les nombres comme 9007199254740993, 1.2300 et -0 gardent leur écriture en XML, même s’ils perdent leur type numérique JSON. Les nombres hors de la plage finie acceptée sont refusés.
Un objet @attributes: {} vide est omis avec un avertissement ; un attribut vide comme id="" est conservé. Un tableau racine revient à l’intérieur de la propriété représentant la racine XML, pas sous forme de tableau à la racine du JSON.
XML pris en charge
L’outil convertit des données XML 1.0 avec un seul élément racine. Les noms doivent comporter 1 à 64 caractères ASCII, commencer par une lettre ou un trait de soulignement, puis contenir des lettres, chiffres, traits de soulignement, tirets ou points. Les noms commençant par xml, la syntaxe des espaces de noms et les noms dangereux liés aux prototypes sont refusés. Les clés ne sont pas renommées automatiquement.
Les espaces de noms, DTD/DOCTYPE, déclarations ENTITY, instructions de traitement et mélanges de texte avec des éléments enfants ne sont pas pris en charge. Les balises de fermeture doivent correspondre, les attributs doivent être distincts et les clés JSON ne doivent pas être dupliquées.
Les cinq entités XML prédéfinies et les références numériques valides sont décodées une fois : &lt; devient le texte <. Le texte CDATA est conservé ; ses délimiteurs, les commentaires et la déclaration XML sont omis avec un avertissement. Les fins de ligne XML deviennent LF. Les tabulations et sauts de ligne littéraux des attributs deviennent des espaces ; les références numériques conservent ces caractères. Les espaces de mise en forme entre enfants sont omis, mais ceux du texte d’un élément sans enfants sont conservés.
Fichiers, limites et téléchargements
Les fichiers doivent utiliser UTF-8. Un BOM initial est retiré avec un avertissement ; un second est refusé. La copie et le téléchargement incluent tout le résultat, même si l’aperçu s’arrête à 50 000 unités UTF-16. En cas d’échec du presse-papiers, utilisez la copie manuelle.
| Limite | Maximum |
|---|---|
| Fichier / entrée encodée en UTF-8 | 2 000 000 octets |
| Longueur de l’entrée | 1 000 000 unités UTF-16 |
| Sortie | 2 000 000 unités UTF-16 / 4 000 000 octets |
| Profondeur du JSON d’entrée / XML | 100 / 40 |
| Durée de conversion | 8 secondes |
Les documents complexes peuvent atteindre d’autres limites de traitement avant ces maxima. Les erreurs, l’annulation et les limites dépassées ne produisent aucune sortie partielle.
Les fichiers téléchargés sont converted.xml ou converted.json, en UTF-8 sans BOM. XML ne contient pas de déclaration et se termine par LF. JSON utilise l’indentation choisie, sans saut de ligne final.
La conversion utilise un Worker local et nécessite JavaScript. Les documents ne sont ni envoyés ni stockés dans le navigateur. Après avoir changé l’entrée, le mode ou les options, relancez la conversion pour obtenir un résultat exportable.