Un diff di testo su JSON segnala la cosa sbagliata più spesso di quella giusta. Rindenta un file, o sposta una proprietà dal fondo in cima, e un diff basato sulle righe si accende come decine di righe modificate anche se i dati sono identici. Ciò che vuoi davvero sapere è se i valori sono cambiati, non se i byte lo sono.
Usare lo strumento di diff JSON
Incolla il documento originale in Prima e quello modificato in Dopo, poi premi Confronta. Ogni differenza nel risultato porta il percorso del valore e entrambi i lati della modifica, quindi stai leggendo “$.b è cambiato da "x" a "y"” invece di contare i segni più e meno.
Confrontare
{"a":1,"b":"x","c":true,"nested":{"n":1.0}}
contro
{"b":"y","c":true,"d":"new","nested":{"n":1}}
segna esattamente tre differenze: $.a rimosso, $.b è cambiato da "x"
a "y", e $.d aggiunto. Nient'altro. $.c è identico e non appare.
$.nested.n non appare nemmeno, perché 1.0 e 1 significano lo stesso
numero.
Come oggetti e array vengono confrontati diversamente, di proposito
Gli oggetti vengono trattati come non ordinati, perché è ciò che la specifica JSON dice che sono: un insieme di coppie nome e valore senza ordine definito. Riordinare le chiavi di un oggetto non è una modifica qui, e uno strumento di diff che lo segnalasse come tale starebbe segnalando sulla formattazione, non sui dati.
Gli array vengono confrontati per posizione, perché è l'unica lettura onesta disponibile. Lo strumento non può sapere se hai inserito un elemento nel mezzo di una lista o riscritto ogni elemento dopo, quindi non indovina. Inserire un elemento vicino all'inizio di un lungo array apparirà come molte modifiche posizionali, che è corretto anche se sembra sorprendente la prima volta.
Cosa conta come uguale
1 e 1.0 sono lo stesso valore, e due ortografie diverse di un escape
in una stringa sono la stessa stringa. L'unico posto dove questo diventa
rigido sono gli interi lunghi: due numeri di venti cifre devono corrispondere
cifra per cifra prima di essere chiamati uguali, perché un double di
JavaScript non può rappresentarli in modo univoco e un diff che trattasse
silenziosamente due ID lunghi diversi come lo stesso numero sarebbe
attivamente sbagliato. Le tre regole sono dichiarate nella pagina, perché
un diff che decide silenziosamente è uno su cui non puoi agire.
Invertire i lati
Se hai incollato i documenti nell'ordine sbagliato, Invertire i lati gira il confronto senza riscrivere nulla, il che cambia anche contro quale lato un'aggiunta o rimozione viene segnalata.