Skip to content
jsoncsvonline

Comparación JSON 100% en el cliente

Comparar JSON

Compara dos objetos o archivos JSON al instante y detecta valores añadidos, eliminados y cambiados.

  • Cero subidas a servidores: comparación 100% en tu navegador
  • Diff estructural profundo en objetos y matrices anidadas
  • Opciones avanzadas para orden de claves y comparación de arrays
Array comparison:
JSON original (Izquierda) (Left / Before)
JSON modificado (Derecha) (Right / After)

Motor de comparación estructural

Detecta diferencias reales en los datos, no ruido de líneas.

Las utilidades de comparación tradicionales fallan cuando las claves están en distinto orden o el código está minificado. Nuestro diff evalúa árboles de datos en memoria.

Independiente del orden de claves

Según la norma RFC 8259, los objetos JSON son colecciones no ordenadas. La herramienta ignora cambios puramente cosméticos de secuencia.

Diff estructural recursivo profundo

Recorre niveles ilimitados de objetos y matrices anidadas, generando rutas exactas para cada propiedad añadida, eliminada o editada.

Estrategias de comparación de matrices

Compara listas por índice o como conjuntos no ordenados, ideal para cotejar respuestas de APIs que devuelven elementos en orden arbitrario.

Cómo comparar archivos JSON online

Comparar documentos JSON con herramientas basadas en líneas de texto (como git diff o comparadores convencionales) suele arrojar falsos positivos, ya que el orden de las claves o el espaciado pueden variar sin alterar los datos reales.

Nuestro motor de diferencias estructurales JSON resuelve este problema en tres pasos automatizados:

  1. Normalización de sintaxis: Ambos documentos se analizan en representaciones en memoria según el estándar RFC 8259.
  2. Recorrido recursivo por rutas: A cada par clave-valor y elemento de array se le asigna una ruta JSON explícita (ej. usuarios[0].direccion.ciudad).
  3. Diferencias categorizadas: Las adiciones, eliminaciones y cambios de valor o tipo se aíslan y resaltan con etiquetas visuales claras.

Orden de claves en objetos (Conformidad RFC 8259)

Según la especificación oficial de JSON (RFC 8259), un objeto es una colección desordenada de pares clave/valor. Por tanto, {"a": 1, "b": 2} y {"b": 2, "a": 1} representan exactamente la misma información semántica.

De forma predeterminada, nuestra herramienta activa el modo Ignorar orden de claves para evitar ruido innecesario. Si tu API exige un orden estricto, desmarca esta opción para considerar el reordenamiento como cambio.

Comparación de matrices (arrays): ordenadas vs desordenadas

A diferencia de las claves de un objeto, los elementos de un array sí están ordenados. Sin embargo, en muchas APIs REST y GraphQL, las listas representan conjuntos (como etiquetas o permisos) donde el orden no es relevante.

Nuestra herramienta incluye la opción Ignorar orden de arrays. Al activarla, los elementos se emparejan por igualdad profunda sin importar su posición, evitando cascadas de falsas diferencias si se inserta un elemento al inicio.

Exportación y generación de informes de diferencias

Una vez finalizada la comparación, puedes descargar un informe completo en formato JSON Patch (RFC 6902) o en Markdown para revisiones de código y pull requests. Como todo el procesamiento se ejecuta en tu navegador, tus bases de datos y respuestas de API permanecen seguras.

Comparación programática de JSON en Python y Node.js

Si necesitas automatizar la comparación de JSON en tus pruebas unitarias o pipelines de CI/CD, estas son las implementaciones recomendadas:

Python (DeepDiff)

import json
from deepdiff import DeepDiff

# Load JSON files or API responses
with open('original.json') as f1, open('modified.json') as f2:
    original_data = json.load(f1)
    modified_data = json.load(f2)

# Deep structural diff with key-order independence
differences = DeepDiff(original_data, modified_data, ignore_order=False)

print("Added keys:", differences.get('dictionary_item_added', {}))
print("Removed keys:", differences.get('dictionary_item_removed', {}))
print("Values changed:", differences.get('values_changed', {}))
print("Type changes:", differences.get('type_changes', {}))

Node.js / TypeScript (fast-json-patch)

import fs from 'node:fs';
import { compare } from 'fast-json-patch';

// Read and parse documents locally
const original = JSON.parse(fs.readFileSync('original.json', 'utf8'));
const modified = JSON.parse(fs.readFileSync('modified.json', 'utf8'));

// Generate standard RFC 6902 JSON patch differences
const delta = compare(original, modified);
console.log('Structured differences:', delta);
// Output: [ { op: 'replace', path: '/user/age', value: 26 }, ... ]

Comparación de JSON en línea de comandos con jq y diff

En entornos de terminal Unix y macOS, normaliza el orden de las claves con jq -S antes de ejecutar diff:

# Sort keys alphabetically with jq, then run unified diff
diff -u <(jq -S . original.json) <(jq -S . modified.json)

¿Necesitas ordenar tu JSON antes de comparar? Da formato a tus datos con nuestro Formateador JSON, diagnostica errores de sintaxis con el Validador JSON, o exporta tus registros a hojas de cálculo con nuestro Convertidor de JSON a CSV.

FAQ

Preguntas frecuentes

¿Qué es un JSON Diff y cómo funciona?

Un JSON Diff compara dos documentos JSON evaluando su estructura interna en árbol (AST) en lugar de comparar líneas de texto. Detecta adiciones, eliminaciones, modificaciones y cambios de tipo.

¿Ignora el comparador el orden de las claves?

Sí, por defecto. Según el estándar RFC 8259, los objetos JSON son colecciones no ordenadas, por lo que {"a":1,"b":2} y {"b":2,"a":1} representan exactamente la misma información semántica.

¿Puedo comparar matrices ignorando su orden?

Sí. Puedes alternar la opción para ignorar el orden en arrays, lo que resulta especialmente útil al contrastar respuestas de APIs o consultas de bases de datos.

¿Se garantiza la privacidad de mis archivos al compararlos?

Sí. La comparación se realiza 100% en tu navegador mediante JavaScript local, garantizando la total privacidad de tus datos de configuración y credenciales.

¿Se suben mis datos a algún servidor?

No. La conversión se ejecuta en un Web Worker dentro de esta página, por lo que el archivo nunca sale de tu dispositivo. Puedes comprobarlo tú mismo: abre las herramientas de desarrollo del navegador, ve a la pestaña Red (Network) y realiza una conversión. Verás que no hay solicitudes. Por esta misma razón no hay límite de tamaño ni cuota diaria: no hay costes de servidor que racionar.

¿Existe un límite en el tamaño del archivo?

No. Los datos de entrada se leen en fragmentos (chunks) y la salida se transmite en flujo (stream), por lo que el uso de memoria se mantiene constante en lugar de escalar con el tamaño del archivo. El límite práctico es tu propio equipo, y se mide en gigabytes y no en megabytes.

¿Es gratis y necesito crear una cuenta?

Es totalmente gratuito, sin cuenta, sin versiones de prueba y sin planes de pago para desbloquear archivos más grandes. La herramienta funciona exactamente igual para todos los usuarios.

Convertidores y herramientas relacionadas