JSON Diff: confronta oggetti JSON

Incolla due documenti JSON per vedere esattamente cosa è cambiato. Ogni differenza è elencata per percorso, come $.users[2].email, e formattazione o ordine delle chiavi non generano mai falsi allarmi.

Funziona nel browserNessuna registrazioneNessun caricamento

L'ordine delle chiavi è sempre ignorato.

Come usare JSON Diff

  1. Incolla il JSON originale a sinistra e quello modificato a destra, oppure apri due file.
  2. Gli errori di sintassi compaiono sotto ogni riquadro con riga e colonna, così puoi correggerli rapidamente.
  3. Leggi la tabella Percorsi modificati: ogni riga indica se un valore è stato aggiunto, rimosso o modificato, con il valore precedente e quello nuovo.
  4. Spunta Ignora l'ordine degli array quando le liste sono insiemi, ad esempio tag o permessi.
  5. Scorri fino alla vista affiancata per vedere le modifiche nel contesto, oppure copia l'elenco delle modifiche come JSON.

Perché un diff JSON strutturale è meglio di un diff testuale

Un semplice diff testuale confronta caratteri e righe, quindi due file JSON con gli stessi dati possono sembrare completamente diversi se uno è minificato, indentato diversamente o ha le chiavi in un altro ordine. Questo strumento analizza prima entrambi i documenti e confronta i dati: gli oggetti vengono confrontati chiave per chiave indipendentemente dall'ordine, e numeri, stringhe, booleani e null per valore. Vengono segnalate solo le modifiche reali.

Come vengono segnalate le modifiche

Ogni differenza riceve una posizione in stile JSONPath, come $.owner.email o $.items[3].price, e uno di tre tipi:

  • aggiunto: la chiave o l'elemento dell'array esiste solo nel JSON modificato.
  • rimosso: esiste solo nel JSON originale.
  • modificato: esiste in entrambi ma il valore è diverso, compresi i cambi di tipo, ad esempio una stringa che diventa un numero.

Gli array vengono allineati con un algoritmo di sottosequenza comune più lunga (LCS), quindi l'inserimento di un elemento all'inizio di una lista viene segnalato come una sola aggiunta invece di marcare come modificati tutti gli elementi successivi.

Ignorare l'ordine degli array

Molte API restituiscono liste il cui ordine non ha significato, come ruoli, tag o ID. Con Ignora l'ordine degli array attivo, gli array vengono confrontati come collezioni: un elemento conta come aggiunto o rimosso solo se non ha un corrispondente uguale dall'altra parte. La vista affiancata ordina allora gli elementi degli array, così le liste uguali risultano allineate.

Usi tipici

Confrontare risposte API tra staging e produzione, verificare cosa ha cambiato una migrazione in un file di configurazione, rivedere le differenze tra due package.json o tsconfig e fare il debug degli snapshot test.

Domande frequenti

L'ordine delle chiavi conta nel confronto di JSON?
No. Gli oggetti JSON non sono ordinati, quindi {"a":1,"b":2} e {"b":2,"a":1} risultano uguali. L'ordine degli array invece conta per impostazione predefinita, perché gli array sono ordinati, ma puoi disattivarlo con Ignora l'ordine degli array.
Il mio JSON viene caricato su un server?
No. Entrambi i documenti vengono analizzati e confrontati nel tuo browser. Nulla viene inviato in rete, quindi lo strumento è sicuro anche per risposte API che contengono token o dati dei clienti.
Cosa significano percorsi come $.users[2].email?
$ è la radice del documento, .users è una chiave e [2] è il terzo elemento di un array (gli indici partono da 0). Le chiavi con spazi o caratteri speciali sono scritte tra parentesi quadre, come $["first name"].
1 è uguale a 1.0?
Sì. Entrambi corrispondono allo stesso numero, quindi non vengono segnalati come differenza. Un numero e una stringa, come 1 e "1", sono diversi e vengono segnalati come modificati.
Posso confrontare JSON con commenti o virgole finali?
Il JSON standard non li ammette, quindi un input del genere viene segnalato con riga e colonna esatte. Rimuovi commenti o virgole, oppure pulisci prima il documento nel JSON Formatter.

Strumenti correlati