XML a JSON

XML y JSON modelan los datos de manera diferente: XML tiene atributos y contenido mixto, JSON tiene objetos y arreglos. Convertir sin pérdida necesita una convención. Esta herramienta ofrece tres: compacto (elimina atributos), Badgerfish (atributos bajo @key, texto bajo $) y literal (cada nodo XML se convierte en un objeto JSON con plena fidelidad). Elige el que coincida con el consumidor de JSON al que te diriges.

Cómo convertir XML a JSON

  1. 1

    Pegar XML

    Cualquier XML bien formado. Se preservan los espacios de nombres.

  2. 2

    Elegir estilo de conversión

    Compacto, Badgerfish o literal/sin pérdida.

  3. 3

    Manejar arreglos

    Forzar ciertos elementos a ser siempre arreglos (configurable).

  4. 4

    Copiar salida JSON

    Con formato bonito o minimizado, tu elección.

Comparación de los tres estilos

Entrada:

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

Compacto (elimina atributos):

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

Badgerfish (atributos bajo @, texto bajo $):

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

Literal / JsonML-ish (plena fidelidad):

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

Arreglos forzados

XML no tiene forma de decir “esta es una lista de uno”. Una secuencia de un solo elemento se ve idéntica a un escalar:

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

Eso puede serializarse como {"item": "A"} o {"item": ["A"]}. El convertidor te permite marcar nombres de elementos (por XPath) como siempre-arreglos, para que tu consumidor JSON posterior obtenga tipos consistentes.

Contenido mixto

El contenido mixto, texto intercalado con elementos hijos, es el único lugar donde cualquier conversión de XML a JSON pierde información:

<p>¡Hola <em>mundo</em>!</p>

La mayoría de los estilos eliminan el texto o lo colapsan. El estilo literal preserva el orden a través de un arreglo:

{
  "p": {
    "@content": ["¡Hola ", { "em": "mundo" }, "!"]
  }
}

Inferencia de tipos

Por defecto, los valores son cadenas. Activa “analizar numérico/booleano” y el convertidor convertirá 42, 3.14, true, false a los tipos JSON correspondientes. Ten cuidado: un atributo XML id="007" se convierte en 7 con la conversión activada, lo cual probablemente no quieras.

Cuándo elegir cuál

  • Compacto: para JSON legible por humanos donde los atributos son ruido.
  • Badgerfish: cuando necesitas atributos y texto a la misma profundidad que los hijos.
  • Literal: cuando debes volver a XML sin pérdida.

Preguntas frecuentes

Cuando un elemento aparece una vez, el convertidor predetermina a objeto; dos o más, a arreglo. Usa la opción de forzar arreglo para hacerlo consistente si tu consumidor espera una forma.

Los prefijos de espacio de nombres se preservan en las claves (ns:title) a menos que habilites “eliminar espacios de nombres”. Las declaraciones mismas se convierten en atributos @xmlns:ns en el elemento raíz.

El modo literal es el más cercano a ser sin pérdida, pero el orden del contenido mixto entre elementos y texto es complicado. El modo compacto definitivamente pierde atributos. Badgerfish es un término medio pragmático.

No. La conversión se realiza en tu navegador.

Herramientas relacionadas

Herramienta disponible en otros idiomas