JavaScript Object Notation (JSON) es un formato de archivo estándar abierto. JSON utiliza texto en lenguaje natural para transmitir objetos de datos que consisten en pares de nombre-valor y tipos de datos de matriz (o cualquier otro valor serializable). JSON es un formato de datos muy común que se utiliza para la comunicación asíncrona entre navegador y servidor, incluso como reemplazo de XML.

Existen varios recursos en línea que describen las similitudes y diferencias entre JSON y XML. La siguiente tabla describe un aspecto de ellos:

JSON

XML

Es la notación de objetos de JavaScript

Es un lenguaje de marcado extensible

Está basado en el lenguaje JavaScript.

Se deriva de SGML.

Es una forma de representar objetos.

Es un lenguaje de marcado y utiliza la estructura de etiquetas para representar elementos de datos.

No proporciona ningún soporte para espacios de nombres.

Admite espacios de nombres.

Admite matriz.

No admite matriz.

Los archivos son muy fáciles de leer en comparación con XML.

Los documentos son relativamente difíciles de leer e interpretar.

No usa etiqueta final.

Tiene etiquetas de inicio y final.

Es menos seguro.

Es más seguro que JSON.

No admite comentarios.

Admite comentarios.

Solo admite codificación UTF-8.

Admite varias codificaciones.

Fuente: https://www.geeksforgeeks.org/difference-between-json-and-xml/