tigtools

Diff JSON

Incolla due documenti JSON per vedere esattamente quali valori differiscono, elencati per percorso come $.order.items[2].price.

Funziona nel browser Nessuna registrazione

Confronta array
Mostra

Come si usa

  1. Incolla il JSON originale a sinistra e il JSON modificato a destra, oppure prova l'esempio.
  2. Scegli come confrontare gli array: per posizione oppure abbinando gli elementi, in modo che un elemento inserito venga segnalato una sola volta.
  3. Leggi le differenze come elenco o affiancate. Ognuna ha un percorso dalla radice ($).
  4. Copia il report per incollarlo in un ticket o in una revisione del codice.

Come funziona

I due documenti vengono analizzati e confrontati come dati, non come testo. Gli oggetti vengono confrontati chiave per chiave, quindi l'ordine delle chiavi e gli spazi bianchi o il rientro non hanno importanza. I numeri vengono confrontati per valore, quindi 1 e 1.0 sono uguali.

Ogni differenza ha un percorso scritto come un'espressione JSONPath: $ è la radice, .name è una proprietà, [2] è un indice di array e le chiavi che non sono nomi semplici sono racchiuse tra virgolette, come in $["first-name"]. Vengono segnalati quattro tipi di differenza: aggiunta (solo a destra), rimossa (solo a sinistra), modificata (stesso tipo, valore diverso) e cambio di tipo (ad esempio il numero 44.9 è diventato la stringa "44.90" oppure un valore è diventato null). Quando un intero oggetto o array viene aggiunto o rimosso, viene segnalato una sola volta nel proprio percorso, anziché una volta per campo.

Per impostazione predefinita, gli array vengono confrontati in base alla posizione: elemento 0 con elemento 0, elemento 1 con elemento 1. Se un elemento viene inserito all'inizio, tutti gli elementi successivi appaiono modificati. «Abbina elementi spostati» prima allinea i due array usando una sottosequenza comune più lunga di elementi uguali, così un inserimento o una eliminazione viene segnalato una sola volta e gli elementi rimanenti vengono accoppiati. Gli elementi aggiunti usano l'indice a destra, quelli rimossi l'indice a sinistra. L'abbinamento non viene eseguito per array molto grandi (oltre circa 2 milioni di coppie di elementi), che vengono quindi confrontati in base alla posizione.

I percorsi delle chiavi nell'elenco sono ordinati alfabeticamente all'interno di ogni oggetto. Vengono visualizzate fino a 2.000 differenze; il report copiato le contiene sempre tutte.

Esempi

Verifica di una modifica dell'API

Confronta la risposta di ieri e di oggi per lo stesso ordine. Il diff mostra $.status modificato da "pending" a "shipped", $.total con tipo cambiato da numero a stringa, $.coupon rimosso e $.customer.phone aggiunto.

Deriva della configurazione

Incolla la configurazione JSON di staging e di produzione. Poiché l'ordine delle chiavi viene ignorato, vengono mostrate solo le differenze reali, come $.cache.ttl 300 → 60, anche se i file sono stati salvati da strumenti diversi.

Elenchi con un elemento inserito

Un elenco di prodotti ha acquisito un nuovo primo elemento. Confrontando per posizione, ogni prodotto appare cambiato; con “Abbina elementi spostati”, il risultato è un singolo “Aggiunto $[0]”.

Domande frequenti

In cosa è diverso da un diff testuale?

Un confronto testuale confronta le righe, quindi riordinare le chiavi o riformattare appare come una modifica. Questo strumento confronta i dati analizzati, quindi vengono segnalate solo le differenze di valori, tipi e struttura.

Perché un array mostra molte modifiche dopo un solo inserimento?

Nella modalità “Per posizione”, gli elementi vengono confrontati allo stesso indice e un inserimento sposta tutti gli elementi successivi. Passa a “Abbina elementi spostati” per allineare prima gli elementi uguali.

“1” e 1 vengono considerati uguali?

No. Uno è una stringa e l'altro un numero, quindi la differenza viene segnalata come modifica del tipo. I valori con lo stesso tipo vengono confrontati esattamente.

Posso confrontare file molto grandi?

I file di pochi megabyte funzionano, ma tutto viene elaborato nella memoria del browser, quindi documenti molto grandi possono essere lenti sui telefoni.

Privacy

Entrambi i documenti vengono analizzati e confrontati solo nel tuo browser. Niente viene caricato, archiviato o incluso nelle statistiche.