Diff JSON — Comparar objetos JSON
Compara dos objetos o arrays JSON por ruta con comprobación estricta de tipos. No es un diff de texto por líneas.
Cómo funciona
- + ruta añadida · − eliminada · ~ valor cambiado. Objetos: puntos (user.name); arrays: índices (items[0]). Comparación estricta (1 ≠ "1").
+ ruta añadida · − eliminada · ~ valor cambiado. Objetos: puntos (user.name); arrays: índices (items[0]). Comparación estricta (1 ≠ "1").
Sobre el diff JSON
¿Qué es un diff JSON?
Un diff JSON compara dos valores JSON y lista cambios estructurales por ruta. Esta página informa rutas añadidas (+), eliminadas (−) y valores cambiados (~).
El trabajo ocurre en el navegador. Las rutas de objeto usan puntos (user.name); los arrays usan índices (items[0]). La comparación es estricta: 1 no es "1". No es un diff de texto por líneas ni una CLI de un lenguaje concreto.
Comparar JSON en código
- JavaScript
const a = JSON.parse(left); const b = JSON.parse(right); function diff(x, y, path = "") { if (Object.is(x, y)) return []; if (typeof x !== "object" || !x || typeof y !== "object" || !y) return [{ path, from: x, to: y }]; const keys = Array.from(new Set([...Object.keys(x), ...Object.keys(y)])); return keys.flatMap(k => diff(x[k], y[k], path ? `${path}.${k}` : k)); } const changes = diff(a, b);- Python
import json a = json.loads(left) b = json.loads(right) def diff(x, y, path=""): if x == y: return [] if not isinstance(x, (dict, list)) or not isinstance(y, (dict, list)): return [{"path": path, "from": x, "to": y}] keys = set(x.keys()) | set(y.keys()) if isinstance(x, dict) else range(max(len(x), len(y))) res = [] for k in keys: p = f"{path}.{k}" if path else str(k) if k not in x: res.append({"path": p, "added": y[k]}) elif k not in y: res.append({"path": p, "removed": x[k]}) else: res.extend(diff(x[k], y[k], p)) return res changes = diff(a, b)- Notación
+ user.email = "a@b.c" - items[1] = 2 ~ b 2 -> 3- ¿Qué es un diff JSON?
- Un diff JSON compara dos valores JSON y lista cambios estructurales por ruta. Esta página usa + para rutas añadidas, − para eliminadas y ~ para valores cambiados.
- ¿Cómo se escriben las rutas JSON?
- Las claves de objeto usan puntos, como user.name. Los índices de array usan corchetes, como items[0]. La ruta raíz se muestra como (root) cuando cambia el valor de nivel superior.
- ¿La comparación JSON es estricta de tipo?
- Sí. Los valores deben coincidir en tipo y contenido. El número 1 difiere de la cadena "1", y el orden de las claves del objeto no importa.
- ¿Cómo comparar JSON en código?
- Analiza ambos lados con JSON.parse en JavaScript o json.loads en Python, luego recorre objetos y arrays para informar altas, bajas y cambios de ruta. Esta página es una herramienta del navegador, no un paquete CLI.