JSON a XML y de vuelta
JSON ⇄ XML
Convierte entre JSON y XML con tratamiento configurable de atributos, arreglos y nodos de texto.
Convierte XML en JSON y viceversa. No hay una correspondencia canónica entre los dos —XML tiene atributos, contenido mixto ordenado y espacios de nombres, y JSON no tiene nada de eso—, así que esta página hace explícitas sus decisiones y te deja cambiarlas en lugar de esconder una convención.
Un atributo queda como `@id`.
Donde va el texto propio de un elemento.
XML
JSON
@name y el texto propio de un elemento va a #text, mientras que los hermanos repetidos se convierten en un array. Lo último es donde la ida y vuelta puede perder información: una lista que resulta tener un solo elemento vuelve como un objeto suelto, salvo que «usar siempre arrays» esté activado.Entrada
215 caracteres
Salida
399 caracteres
Cómo se usa
Elige la dirección
Los dos lados mantienen entradas separadas, así que cambiar de uno a otro no pierde lo que habías pegado.
Ajusta el prefijo de atributos y la clave de texto
`@` y `#text` son la convención extendida (fast-xml-parser, xml2js y otros los usan), pero si el JSON que tienes que producir usa otra cosa, cámbialo aquí en lugar de posprocesar.
Activa «usar siempre arreglos» si el JSON va a código
Esta es la parte con pérdida de la correspondencia: un `<item>` se convierte en un objeto, dos se convierten en un arreglo, y el código que lo consume tiene que manejar ambos casos. Forzar arreglos hace la forma estable a costa de algo de verbosidad.
Preguntas frecuentes
¿El viaje de ida y vuelta me devuelve mi XML?
Estructuralmente normalmente sí, byte a byte no. Los comentarios, las instrucciones de procesamiento y la distinción entre `<a/>` y `<a></a>` no sobreviven, y el contenido mixto —texto y elementos intercalados— no puede representarse en JSON de una manera que conserve el orden.
¿Por qué `12` es una cadena?
Porque XML no tiene tipos: cada valor de un documento es texto, y solo un esquema dice lo contrario. El interruptor Convertir tipos adivinará números y booleanos, pero es una suposición: un código de producto `0123` se convierte en 123, y una cadena de versión `1.10` se convierte en 1.1.
¿Qué pasa con los espacios de nombres?
Los prefijos se conservan como parte del nombre del elemento —`soap:Body` se convierte en la clave `soap:Body`— y las declaraciones `xmlns` pasan como atributos ordinarios. Nada se resuelve a un URI de espacio de nombres, así que dos documentos que usan prefijos distintos para el mismo espacio de nombres producen JSON distinto.
¿Puedo darle una respuesta SOAP?
Sí, y esa es una de las razones comunes para estar aquí. El sobre, el cuerpo y la carga útil pasan todos como objetos anidados; las claves `@` son donde acaban los atributos de SOAP.
Puede recibir de
Formateador y validador de XML
XML Formatter & Validator
Indenta XML e informa de la línea y la columna del primer fallo de buena formación.
Probador de XPath
XPath Tester
Evalúa una expresión XPath o un selector CSS sobre XML o HTML y enumera todos los nodos que coinciden.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Formateador y validador de YAML
YAML Formatter & Validator
Reindenta el YAML de forma uniforme, lo valida y señala los tabuladores y las anclas que rompen los analizadores.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Probador de JSONPath
JSONPath Tester
Ejecuta una expresión JSONPath sobre un documento y resalta los nodos que coinciden mientras escribes.
Formateador y validador de XML
XML Formatter & Validator
Indenta XML e informa de la línea y la columna del primer fallo de buena formación.
Probador de XPath
XPath Tester
Evalúa una expresión XPath o un selector CSS sobre XML o HTML y enumera todos los nodos que coinciden.
Codificador y decodificador Base64
Base64 Encoder & Decoder
Codifica y decodifica Base64 y Base64URL, para texto o archivos, tratando UTF-8 correctamente.
curl a código
curl to Code
Convierte un comando curl en fetch, axios, requests de Python, Go, PHP o PowerShell.