JSON Diff si riferisce al confronto delle differenze tra due insiemi di dati JSON, identificando i campi aggiunti, eliminati e modificati tra di essi. Nello sviluppo quotidiano, abbiamo spesso bisogno di sapere 'esattamente cosa è cambiato' tra due JSON: cosa è cambiato nella struttura di risposta prima e dopo un aggiornamento API, dove le configurazioni differiscono tra due ambienti, in quale campo il risultato reale devia dalla base attesa nei test automatizzati. La verifica manuale riga per riga è lenta e soggetta a errori, lo strumento JSON Diff evidenzia automaticamente le differenze.
Il confronto delle differenze JSON ha generalmente due approcci. Uno è 'diff testuale' (textual diff): dopo aver formattato JSON in testo multilinea standardizzato, confronta riga per riga in modo simile a Git diff, mostrando visivamente aggiunte/eliminazioni/modifiche in ogni riga. L'altro è 'diff semantico/strutturale' (structural diff): analizza JSON in struttura ad albero, confronta valori e tipi uno per uno per percorso di campo (come user.address.city), senza essere influenzato dall'ordine di scrittura dei campi, dall'indentazione e altri fattori di formattazione. Questo strumento offre entrambe le visualizzazioni testuale e semantica, commutabili secondo necessità.
Perché formattare prima di confrontare? Perché gli stessi dati possono avere formattazioni completamente diverse (una riga vs più righe, 2 spazi vs 4 spazi), se si confronta direttamente dal testo originale, si genereranno molte 'false differenze' causate da differenze di formattazione. Questo strumento analizza e formatta uniformemente i JSON di entrambi i lati prima del confronto, eliminando l'interferenza dei caratteri vuoti in modo che tu veda solo cambiamenti di dati realmente significativi.
È importante notare che l'ordine delle chiavi negli oggetti JSON non è semanticamente importante ({"a":1,"b":2} è equivalente a {"b":2,"a":1}), ma l'ordine degli elementi negli array è significativo ([1,2] è diverso da [2,1]). Pertanto, quando ti interessa solo se il contenuto dell'array è consistente indipendentemente dall'ordine, ti consigliamo di ordinare gli array o ordinare le chiavi prima del confronto, per evitare che cambiamenti di ordine siano erroneamente considerati differenze.
Tutta la formattazione e il confronto di questo strumento sono effettuati localmente nel browser, i dati non vengono inviati al server; supporta anche evidenziazione a livello di carattere, conteggio di aggiunte/eliminazioni/modifiche, confronto simultaneo con più schede e condivisione di scenari di confronto tramite URL, adatto per integrazione API, confronto configurazioni, asserzioni di test e Code Review.