Saltar al contenido
4all.tools

Compara documentos JSON online

Compara dos documentos JSON estrictos por sus valores. Revisa altas, bajas y cambios con diagnósticos localizados y vistas previas acotadas.

Espacio de trabajo de la herramienta

Comparar documentos JSON

Se necesita JavaScript para comparar JSON en tu navegador.

Introduce texto JSON estricto para compararlo.

Introduce texto JSON estricto para compararlo.

  • Compara los valores JSON por su significado, sin importar los espacios ni el orden de las claves de objetos.
  • Los elementos de los arrays se comparan por posición.
  • Cada entrada admite hasta 1.000.000 unidades de código UTF-16.

La comparación se procesa localmente en tu navegador. El JSON no se envía a ningún servidor.

Acciones de comparación

Aún no hay una comparación.

Aún no hay una comparación.

Compara dos documentos JSON

Pega el documento anterior en JSON anterior y el nuevo en JSON nuevo; después, selecciona Comparar. El resultado muestra cada cambio semántico, su ruta JSON y los valores anterior y nuevo. El resumen cuenta por separado las altas, las bajas y los cambios. Una propiedad nueva es un alta, una propiedad que falta es una baja y un valor distinto en una ruta existente es un cambio.

En este ejemplo hay dos altas y dos cambios:

{
  "perfil": { "activo": true, "zona": "oeste" },
  "etiquetas": ["azul", "anterior"]
}
{
  "etiquetas": ["azul", "nuevo", "extra"],
  "perfil": { "zona": "oeste", "activo": false },
  "nota": null
}

Las altas son $.nota y $.etiquetas[2]. Los cambios son $.perfil.activo y $.etiquetas[1]. El resumen es 2 altas, 0 bajas, 2 cambios y 4 en total. Cambiar el orden de las claves dentro de perfil no añade diferencias.

Cómo se comparan los valores JSON

Los espacios y el orden de las propiedades de un objeto no afectan la comparación. Los elementos de los arrays se asocian por índice; insertar uno cerca del principio puede cambiar los valores de varias posiciones posteriores. Una propiedad ausente no es igual a una propiedad cuyo valor es null; también son distintos null, la cadena "null" y la cadena vacía.

Si un valor cambia a otro tipo JSON, se registra un solo cambio en esa ruta, sin enumerar cada diferencia dentro del valor reemplazado:

{"perfil":{"nombre":"Ada","roles":["lectura","edición"]}}
{"perfil":"archivado"}

Es un cambio en $.perfil. El subárbol de objeto anterior y la cadena nueva son los dos valores de ese registro.

JSON estricto y precisión de números

Las dos entradas deben ser JSON estricto. Se rechazan los comentarios, las comas finales, las cadenas entre comillas simples y las claves de propiedad duplicadas. Los diagnósticos indican el lado de la entrada e incluyen línea, columna o ruta solo cuando el analizador proporciona esa información. La lista puede indicar que no muestra todos los diagnósticos.

Durante la comparación, los números JSON se representan como números de JavaScript. Los números muy grandes o con mucha precisión pueden perderla al analizarse; se muestra un aviso cuando el analizador detecta ese riesgo. La comparación usa los valores JSON representados, no números matemáticos de precisión arbitraria ni la escritura original del número.

Límites de entrada, operación y vistas previas

Cada entrada admite hasta 1.000.000 unidades de código UTF-16. El análisis también limita la anidación a 200 niveles, los nodos a 100.000, los diagnósticos a 100 y el trabajo de análisis a 1.000.000 unidades por documento. La comparación tiene un presupuesto de 1.000.000 unidades de trabajo y admite como máximo 1.000 registros de cambio. La presentación completa se limita a 2.000.000 unidades UTF-16 y una operación puede esperar hasta 15 segundos la respuesta del Worker.

Cada valor muestra una vista previa JSON completa de hasta 512 unidades UTF-16. Si es mayor, se muestra un resumen con su tipo JSON y la cantidad de elementos, claves o unidades de código; el valor completo sí se compara. Los resultados se presentan en páginas de 50 filas, mientras que los contadores abarcan toda la comparación. Si se alcanza un límite, reduce la entrada o compara un cambio más pequeño.

Procesamiento local y cancelación

El análisis y la comparación se ejecutan localmente en tu navegador. El texto de entrada no se envía a un servidor de la aplicación. Selecciona Cancelar para detener una comparación que siga en curso; ambas áreas conservan su texto. Esta herramienta no guarda las entradas automáticamente.