Comparador de JSON, Compara Dos Documentos JSON

Compara dos documentos JSON de forma estructural. Claves añadidas, eliminadas y cambiadas en una vista de árbol, el orden de las claves nunca importa.

🌐 English

Original JSON

Changed JSON

3 added, 0 removed, 1 changed

Tree view

Object · 6 entries

Path list

~ active: true -> false
+ skills[2]: "writing"
+ address.postcode: "W1"
+ died: 1852

🔒 Privado por diseño: todo funciona localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo comparar dos documentos JSON

  1. Pega tu JSON original en el recuadro Original JSON, y la versión modificada en el recuadro Changed JSON, hay un par de ejemplo cargado por defecto para que veas cómo funciona de inmediato.
  2. La vista de árbol se actualiza al instante: las claves añadidas se muestran en verde, las eliminadas en rojo, y los valores cambiados muestran el valor antiguo tachado junto al nuevo.
  3. Activa Ignore array order si quieres que los arrays de valores simples (números, textos, etc.) se comparen como un conjunto en lugar de posición por posición.
  4. Revisa el panel Path list para ver una línea clara por cada diferencia, cópiala directamente, o descárgala como .txt o .csv.

Comparación estructural, no comparación de líneas

Un comparador de texto basado en líneas es la herramienta equivocada para JSON, y falla de una forma muy específica y muy común: dos respuestas de API (o dos archivos de configuración) pueden contener exactamente los mismos datos, escritos con sus claves en otro orden (quizás una vino de una librería distinta, o de una versión distinta del mismo servidor) y un comparador de texto mostrará eso como docenas de líneas “cambiadas”, aunque nada de los datos reales sea distinto. Esta herramienta analiza primero ambos documentos, así que compara significado, no texto, las claves de un objeto se emparejan por nombre estén donde estén, nunca por en qué línea aparecen.

Añadido, eliminado y cambiado, localizado con precisión

Cada diferencia se clasifica en exactamente uno de tres tipos: una clave que solo existe en el documento nuevo está añadida, una clave que solo existe en el antiguo está eliminada, y una clave presente en ambos con un valor distinto está cambiada. El anidamiento se gestiona de forma recursiva, así que un único campo cambiado en lo profundo de un documento grande (user.preferences.notifications.email, por ejemplo) se reporta exactamente en esa ruta, no como un vago “el objeto user es distinto”. Una clave añadida o eliminada aparece como una única entrada limpia para todo el valor nuevo o desaparecido, en lugar de desglosarse campo por campo, así que un objeto anidado recién añadido se lee como una sola línea, no como diez.

Arrays: ordenados por defecto, sin orden bajo petición

Los arrays son más complicados que los objetos, porque la posición SÍ puede tener significado, el orden de una lista numerada, una secuencia de pasos o el orden de los elementos en una cola a menudo importa. Por defecto, los arrays se comparan posición por posición: índice 0 contra índice 0, índice 1 contra índice 1, y así sucesivamente. Si tus arrays contienen valores simples y su orden de verdad no te importa (un conjunto de etiquetas, una lista de IDs permitidos), activa Ignore array order y la comparación pasa a emparejar valores sin importar la posición, las mismas tres etiquetas en otro orden mostrarán cero diferencias. Los arrays que contienen objetos siempre se mantienen posición por posición, ya que emparejar objetos de forma fiable entre distintas posiciones necesitaría un identificador estable que esta herramienta no asume que tengas.

Tu JSON nunca sale de tu dispositivo

Ambos documentos se analizan y comparan con JavaScript normal dentro de tu propia pestaña del navegador. No hay subida, no hay viaje de ida y vuelta a un servidor, y no queda ninguna copia de ninguno de los dos documentos en ningún sitio salvo tu propio dispositivo, tokens de API, registros de usuarios y secretos de configuración incluidos.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Comparador de JSON, Compara Dos Documentos JSON con dos documentos JSON en paralelo (un ejemplo pequeño con campos de nombre, año, booleano y matriz) comparados de forma estructural, de modo que las claves añadidas, eliminadas y modificadas se marcan en lugar de mostrarse como diferencias de líneas en bruto
Comparador de JSON, Compara Dos Documentos JSON en pleno proceso: dos documentos JSON en paralelo (un ejemplo pequeño con campos de nombre, año, booleano y matriz) comparados de forma estructural, de modo que las claves añadidas, eliminadas y modificadas se marcan en lugar de mostrarse como diferencias de líneas en bruto.
Diagrama: dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca
Dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca.

Preguntas frecuentes

La interfaz (botones, etiquetas) aparece en inglés, ¿es un error?

No, es una limitación conocida y honesta, no un error de traducción. Todo el análisis y la comparación de JSON (el emparejamiento de claves por nombre, la recursión anidada, la comparación de arrays con o sin orden) es completamente independiente del idioma y funciona igual de bien con datos en español, incluyendo tildes y la ñ en claves y valores. Pero el componente interactivo (botones como "Load sample" o "Swap A ⇄ B", las etiquetas "Original JSON"/"Changed JSON"/"Tree view"/"Path list") es un único componente compartido en inglés, usado sin cambios tanto en esta página como en la original en inglés.

¿En qué se diferencia esto de un comparador de texto normal?

Un comparador de texto (como el Comparador de Textos de este sitio) compara dos archivos línea por línea, así que reindentar un documento JSON, o una herramienta que escribe sus claves en otro orden, aparece como un muro de rojo/verde aunque los DATOS sean idénticos. Esta herramienta analiza primero ambos documentos como JSON real, y luego los compara por estructura (por nombre de clave y anidación, no por posición de línea) así que las claves reordenadas no muestran ninguna diferencia, y un cambio real varios niveles adentro se localiza exactamente (por ejemplo "user.address.city"), nunca enterrado en un mar de falsos positivos.

¿Importa el orden de las claves?

No, nunca, para los objetos. `{"a":1,"b":2}` y `{"b":2,"a":1}` se reportan como completamente idénticos, los objetos se comparan buscando cada clave por NOMBRE en ambos documentos, no por posición. Esta es la razón de ser de esta herramienta frente a un comparador de texto normal: el orden de las claves en JSON no tiene significado semántico, así que esta herramienta nunca lo trata como una diferencia.

¿Qué hace "Ignore array order" y funciona con arrays de objetos?

Con la casilla DESACTIVADA (por defecto), los arrays se comparan posición por posición, `[1,2,3]` frente a `[3,2,1]` muestra cada posición como cambiada, ya que un cambio de posición es una diferencia real para muchos arrays (una lista ordenada de pasos, por ejemplo). Activarla compara los arrays de valores simples (números, textos, booleanos, null) como un conjunto en su lugar, los mismos tres números en otro orden entonces no muestran ninguna diferencia. Esto solo se aplica a arrays formados enteramente por valores simples, eso sí, un array de OBJETOS siempre se compara posición por posición sin importar esta opción, ya que emparejar objetos entre posiciones sin un identificador estable es un problema mucho más difícil que esta herramienta no intenta resolver; esto se indica claramente para que nunca te lleves una idea equivocada.

¿Se sube mi JSON a algún servidor?

No. Ambos documentos se analizan y comparan enteramente dentro de tu pestaña del navegador usando JavaScript normal, no hay ningún paso de subida ni procesamiento en un servidor. Los documentos JSON suelen contener datos reales (respuestas de API, archivos de configuración, registros de usuarios), así que nada de ninguno de los dos sale nunca de tu dispositivo.

¿Puedo exportar la lista de diferencias?

Sí. El panel de lista de rutas muestra cada diferencia como una línea de texto plano (`+ ruta` y su valor para una adición, `- ruta` y su valor para una eliminación, `~ ruta` con los valores antes y después para un cambio) que puedes copiar directamente, o descargar como archivo `.txt` o `.csv` (columnas ruta, tipo, antes, después) para pegar en una hoja de cálculo o un reporte de errores.

Herramientas relacionadas