XML vers JSON

XML et JSON modélisent les données différemment : XML a des attributs et un contenu mixte, JSON a des objets et des tableaux. La conversion sans perte nécessite une convention. Cet outil en propose trois : compact (supprime les attributs), Badgerfish (attributs sous @key, texte sous $) et littéral (chaque nœud XML devient un objet JSON avec une fidélité totale). Choisissez celui qui correspond au consommateur JSON que vous ciblez.

Comment convertir XML en JSON

  1. 1

    Coller XML

    Tout XML bien formé. Les espaces de noms sont préservés.

  2. 2

    Choisir le style de conversion

    Compact, Badgerfish ou littéral/sans perte.

  3. 3

    Gérer les tableaux

    Forcer certains éléments à toujours être des tableaux (configurable).

  4. 4

    Copier la sortie JSON

    Formaté ou minifié, à vous de choisir.

Les trois styles comparés

Entrée :

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Compact (supprime les attributs) :

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (attributs sous @, texte sous $) :

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Littéral / JsonML-ish (fidélité totale) :

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Tableaux forcés

XML n’a aucun moyen de dire “ceci est une liste d’un seul élément”. Une séquence à un seul élément est identique à un scalaire :

<items>
  <item>A</item>
</items>

Cela peut être sérialisé soit en {"item": "A"} soit en {"item": ["A"]}. Le convertisseur vous permet de marquer les noms d’éléments (par XPath) comme toujours-tableaux, afin que votre consommateur JSON en aval obtienne des types cohérents.

Contenu mixte

Le contenu mixte, texte entrelacé avec des éléments enfants, est le seul endroit où toute conversion XML vers JSON perd des informations :

<p>Hello <em>world</em>!</p>

La plupart des styles suppriment le texte ou le réduisent. Le style littéral préserve l’ordre via un tableau :

{
  "p": {
    "@content": ["Hello ", { "em": "world" }, "!"]
  }
}

Inférence de type

Par défaut, les valeurs sont des chaînes. Activez “analyser numérique/booléen” et le convertisseur convertit 42, 3.14, true, false aux types JSON correspondants. Faites attention : un attribut XML id="007" devient 7 avec la conversion activée, ce que vous ne voulez probablement pas.

Quand choisir quoi

  • Compact : pour un JSON lisible par l’homme où les attributs sont du bruit.
  • Badgerfish : lorsque vous avez besoin d’attributs et de texte à la même profondeur que les enfants.
  • Littéral : lorsque vous devez revenir à XML sans perte.

Questions fréquentes

Lorsqu’un élément apparaît une fois, le convertisseur produit un objet par défaut ; deux fois ou plus, un tableau. Utilisez l’option forcer-tableau pour le rendre cohérent si votre consommateur s’attend à une forme précise.

Les préfixes d’espace de noms sont préservés dans les clés (ns:title) sauf si vous activez “supprimer les espaces de noms”. Les déclarations elles-mêmes deviennent des attributs @xmlns:ns sur l’élément racine.

Le mode littéral est le plus proche du sans perte mais l’ordre du contenu mixte entre les éléments et le texte est délicat. Le mode compact perd définitivement des attributs. Badgerfish est un compromis pragmatique.

Non. La conversion s’effectue dans votre navigateur.

Outils similaires

Outil disponible dans d’autres langues