Guías  /  Herramientas para desarrolladores

JSON vs XML: diferencias y cuándo usar cada uno

6 de julio de 2026  ·  6 min de lectura

Escrito por Andrian ·  Redactor técnico, Static.app

Revisado por Roman Frank ·  Revisor técnico, Static.app

JSON y XML sirven para mover datos estructurados entre sistemas, pero resuelven ese problema de formas muy distintas. Elegir mal añade fricción a todas las integraciones que vengan después. Usa JSON para APIs web, datos de aplicaciones y archivos de configuración, y XML para documentos, feeds y contratos que necesiten espacios de nombres o validación con XSD. Mientras lees puedes formatear y comprobar tus propios datos con el formateador de JSON de Static.app y el visor XML, gratuitos y que funcionan en el navegador.

La diferencia clave en una frase

JSON describe la forma de los datos, y XML marca el contenido. JSON es un formato ligero de intercambio de datos basado en objetos, arrays y un puñado de tipos primitivos, así que encaja casi directamente con las estructuras de datos de la mayoría de los lenguajes de programación. XML es un lenguaje de marcado basado en elementos anidados y atributos, pensado primero para documentos y adaptado después a los datos. JSON se pregunta "¿qué forma tienen estos datos?", mientras que XML se pregunta "¿cómo está marcado este contenido?". Ambos son formas válidas de representar la misma información. Las ventajas e inconvenientes de cada uno vienen de ese origen distinto.

Sintaxis comparada

JSON marca la estructura con signos de puntuación y XML lo hace con etiquetas por pares. Imagina el registro de un libro con título, un año numérico y dos autores. En JSON escribes un objeto con llaves, claves como cadenas entre comillas y un array entre corchetes: {"title": "Dune", "year": 1965, "authors": ["Herbert", "Anderson"]}. En XML el mismo registro se convierte en etiquetas anidadas. El año puede ser un atributo o un elemento hijo, y los autores se repiten como elementos hermanos:

JSON XML { "title": "Dune", "year": 1965, "authors": ["Herbert", "Anderson"] } <book year="1965"> <title>Dune</title> <authors> <author>Herbert</author> <author>Anderson</author> </authors> </book> El título se corresponde uno a uno. El año es un valor simple en JSON y un atributo de la etiqueta de apertura en XML. Un array pasa a ser un elemento contenedor más un hijo repetido por valor.
Lee los dos bloques como un solo registro descrito dos veces. El espacio vacío al final de la caja de JSON no es una decisión de dibujo: el mismo registro simplemente necesita menos líneas, porque XML escribe cada nombre dos veces y añade un contenedor alrededor de la lista.
  • Estructura de JSON: las llaves contienen pares clave/valor, los corchetes contienen arrays ordenados y solo hay una forma evidente de anidar datos.
  • Estructura de XML: cada valor vive dentro de una etiqueta de apertura y otra de cierre, como <title>Dune</title>, y cada elemento puede llevar además atributos como <book year="1965">.
  • Dos formas de modelar el mismo campo: XML permite poner un valor en un atributo o en un elemento hijo, así que los equipos necesitan convenciones; JSON no tiene atributos, de modo que solo existe la opción clave/valor.
  • Repetición: JSON expresa una lista como un único array, mientras que XML la expresa como elementos hermanos repetidos con el mismo nombre de etiqueta.

Verbosidad y tamaño del payload

XML repite cada nombre de etiqueta dos veces, una al abrir y otra al cerrar, así que con los mismos datos suele ser más verboso que JSON. Ese peso extra importa en las APIs web de mucho tráfico, donde cada byte cruza la red. La concisión de JSON es una de las razones por las que se convirtió en el formato por defecto de REST. La diferencia se reduce al activar la compresión HTTP, como gzip, porque los nombres de etiqueta repetidos se comprimen muy bien. Sin comprimir, el payload JSON sigue siendo normalmente más pequeño y más fácil de ojear.

LOS MISMOS DATOS, CUATRO TAMAÑOS · ORIENTATIVO Sin comprimir JSON XML Con gzip JSON XML cada nombre va dos veces los nombres repetidos son justo lo que mejor comprime gzip
Son formas, no mediciones. Sin comprimir, XML suele ser el payload más grande, y eso importó muchísimo cuando JSON se convirtió en el formato por defecto de REST. La compresión cierra casi toda la diferencia, así que si el tamaño en la red es crítico, mide tus propios payloads comprimidos con gzip en lugar de fiarte de la regla general.

Tipos de datos, comentarios y contenido mixto

JSON tiene tipos primitivos integrados: cadenas, números, booleanos y null, además de objetos y arrays. Quien lo consume lee 1965 como un número y true como un booleano sin ninguna pista adicional. XML trata todo como texto. Un valor es un número solo porque un esquema o tu propio código lo dicen. Hay tres diferencias prácticas más:

  • Comentarios: XML admite comentarios con <!-- ... -->, mientras que el JSON estándar no los tiene. Existen superconjuntos pensados para configuración, como JSONC y JSON5, que los vuelven a añadir.
  • Contenido mixto: XML representa con naturalidad texto entremezclado con marcado, como un párrafo con palabras en negrita dentro, algo incómodo de modelar en JSON.
  • Espacios de nombres: XML tiene un sistema formal de espacios de nombres para que vocabularios de distintos orígenes convivan sin choques de nombres; JSON no tiene nada equivalente de forma nativa.
Un valor 1965 XML: AMBAS SON CORRECTAS <book year="1965"> <year>1965</year> así que el equipo debe elegir una JSON: UNA SOLA FORMA "year": 1965 nada que decidir
Esta sola diferencia explica buena parte de la fricción de las integraciones con XML. Las dos formas son válidas, así que la convención hay que acordarla y luego respetarla por parte de todos los productores y consumidores. JSON no tiene atributos, de modo que la pregunta ni se plantea.

Esquemas, validación y herramientas

Tanto JSON como XML se pueden validar contra un esquema: JSON Schema para JSON y XSD o DTD para XML. XML cuenta con un conjunto de herramientas consolidado desde hace años. XSD (XML Schema Definition) y el DTD, más antiguo, describen la estructura permitida, mientras que XPath consulta los documentos y XSLT los transforma. JSON usa JSON Schema, que tiene un amplio soporte y encaja bien con herramientas de API como OpenAPI. Para las comprobaciones rápidas del día a día casi nunca necesitas todo eso. Para dar formato e inspeccionar una respuesta JSON, pégala en el formateador de JSON de Static.app, que funciona por completo en tu navegador y te avisa si el JSON no es válido. Si solo quieres un veredicto de válido o no válido sobre la estructura, el validador de JSON lo hace. Para XML, el visor XML de Static.app vuelve a aplicar la sangría al documento y comprueba que esté bien formado, de modo que las etiquetas sin cerrar y las anidaciones rotas salen a la luz enseguida.

Cuándo usar cada uno

Usa JSON cuando los datos sean payloads de API, estado de una aplicación o configuración, y usa XML cuando el contenido sea un documento, un feed o un contrato que exija espacios de nombres o validación con XSD. Ni JSON ni XML están obsoletos, y la elección correcta depende del trabajo, no de la moda.

ELIGE JSON CUANDO Es una API web o REST Los datos son objetos y arrays Trabajas en JavaScript o el navegador Quieres un payload compacto ELIGE XML CUANDO Es un documento con marcado Es SOAP, RSS, Atom o un sitemap Exige atributos o espacios de nombres XSLT o XPath son parte del trabajo Un criterio de cualquier lado suele bastar para decidir
Ningún formato está obsoleto, y rara vez se elige con total libertad. Casi siempre el trabajo ya usa uno de los dos, y el criterio que decide está en la primera columna que reconozcas.

Elige JSON cuando

  1. Estés creando o consumiendo una API web o REST, donde JSON es el estándar de facto y todas las bibliotecas cliente lo entienden.
  2. Tus datos encajen con objetos y arrays simples, como registros, listas y ajustes anidados.
  3. Trabajes con JavaScript o en el navegador, donde JSON es nativo gracias a JSON.parse y JSON.stringify.
  4. Quieras un payload compacto y un archivo de configuración sencillo que se pueda ojear rápido.

Elige XML cuando

  1. Los datos estén centrados en el documento, con texto y marcado mezclados, como DOCX, SVG o formatos editoriales.
  2. Te integres con sistemas empresariales o heredados, servicios web SOAP o estándares como los feeds RSS y Atom y los sitemaps.
  3. Los atributos, los espacios de nombres o una validación XSD estricta formen parte del contrato que debes cumplir.
  4. Necesites transformación y consulta maduras, con XSLT y XPath integrados en el ecosistema.

Preguntas frecuentes

Las cuatro respuestas siguientes tratan el tamaño del payload, la conversión entre los dos formatos, si las herramientas de formato son seguras con datos privados y la compatibilidad con comentarios.

¿JSON siempre pesa menos que XML?

Con los mismos datos, el JSON sin comprimir suele ser más pequeño porque no repite las etiquetas de cierre. Cuando ambos se comprimen con gzip, la diferencia se reduce mucho, ya que los nombres de etiqueta repetidos de XML se comprimen de forma eficiente. Si el tamaño en la red es crítico, mide tus payloads reales comprimidos en lugar de darlo por supuesto.

¿Puedo convertir entre JSON y XML?

A menudo sí, pero no siempre sin problemas. JSON no tiene atributos, contenido mixto ni espacios de nombres, así que un documento XML que los use necesita una convención de nombres para sobrevivir a la conversión de ida y vuelta. Los documentos sencillos y con forma de datos se convierten fácilmente en ambos sentidos; los documentos XML de tipo texto, no. Para los primeros, el conversor de XML a JSON lo resuelve en tu navegador.

¿Son seguras estas herramientas de formato con datos privados?

Sí, con JavaScript activado, el formateador de JSON y el visor XML de Static.app son seguros con datos privados. El formateador de JSON y el visor XML procesan lo que introduces directamente en tu navegador y no lo suben a ningún servidor. Con JavaScript desactivado, el formulario se envía a nuestro servidor. Además, el visor XML rechaza DOCTYPE y las entidades externas, de modo que abrir XML de origen dudoso es seguro.

¿JSON admite comentarios?

El JSON estándar no. Si necesitas comentarios en un archivo de configuración, usa un superconjunto como JSONC o JSON5. La otra opción es un campo de notas específico, que se elimina antes de que un lector de JSON estricto analice el archivo.

Volver a todas las guías