Prima e dopo il deploy, la stessa API restituisce due JSON che sembrano uguali. Confrontare JSON riga per riga non serve a molto, se qualcuno ha riordinato le chiavi. Qui incolli i due testi e ottieni l’elenco delle sole differenze reali, ciascuna con percorso, tipo di modifica, valore vecchio e valore nuovo. Il confronto riguarda i dati già interpretati, non il testo: rientri e ordine delle chiavi non contano.
Confrontare JSON in cinque passaggi
- Incolla l’originale nel riquadro di sinistra e la versione modificata in quello di destra. All’apertura trovi già un esempio.
- Aspetta un attimo: il confronto parte 200 ms dopo l’ultimo tasto. Se un lato non è JSON valido, il messaggio indica il lato, la riga e la colonna.
- Premi Formatta entrambi per indentare il JSON valido, oppure Scambia i lati se li hai incollati al contrario.
- Attiva Ignora l’ordine degli array se l’ordine degli elementi non ti interessa.
- Con Copia il diff come testo ottieni una riga per differenza, con Copia come JSON Patch una patch applicabile da un programma.
Come leggere percorsi, tipi di modifica e valori
Il percorso segue RFC 6901 (JSON Pointer): /utenti/0/nome è la chiave nome del primo elemento di utenti. Una barra dentro una chiave diventa ~1, una tilde diventa ~0. I tipi di modifica sono quattro: aggiunto, rimosso, modificato e tipo cambiato. Ognuno ha un colore, un simbolo (+, -, ~, !) e un’etichetta di testo, quindi il colore da solo non porta l’informazione.
Una riga sopra l’elenco conta i tipi; se i due lati coincidono compare "Nessuna differenza". I valori oltre 200 caratteri vengono tagliati e il pulsante "Mostra il valore intero" li espande.
Ordine degli array, numeri e valori null
Gli oggetti si confrontano per chiave: {"a":1,"b":2} equivale a {"b":2,"a":1}. Gli array, di default, per posizione: [1,2,3] contro [3,2,1] dà due modifiche, perché l’elemento centrale è uguale.
Con l’opzione per ignorare l’ordine, lo strumento crea per ogni elemento un testo canonico con le chiavi ordinate e abbina gli elementi uguali come multiinsieme. Anche gli array annidati vengono confrontati senza ordine. Il prezzo: un elemento cambiato al suo interno appare come uno rimosso e uno aggiunto.
I numeri si confrontano per valore, quindi 1 e 1.0 sono uguali. null non equivale a una chiave mancante. Un oggetto vuoto contro un array vuoto è un cambio di tipo, come 1 contro "1". Le stringhe devono coincidere esattamente, maiuscole e spazi compresi.
Generare una JSON Patch dalle differenze
La patch (RFC 6902) usa add, remove e replace e trasforma il lato sinistro in quello destro. Gli elementi di un array si rimuovono dall’indice più alto al più basso e si aggiungono dal più basso al più alto. Non vengono generate operazioni move o copy. Con l’ordine ignorato il pulsante è disattivato, perché una patch indica gli elementi per posizione.
Limiti dei file JSON e cosa resta nel browser
Lettura e confronto avvengono nel tuo browser con JSON.parse. Lo strumento non invia richieste e non salva nulla; puoi verificarlo nel pannello di rete. Gli appunti vengono usati solo quando premi un pulsante di copia.
Ogni lato può avere 2.000.000 di caratteri; oltre, l’input viene rifiutato con un messaggio. Gli interi oltre 2^53 perdono precisione: 9007199254740993 viene letto come 9007199254740992, quindi due numeri enormi diversi possono sembrare uguali. Se una chiave compare due volte, vale l’ultimo valore. Commenti e virgole finali non sono JSON e l’errore indica riga e colonna. L’elenco mostra le prime 1.000 differenze, i pulsanti di copia le usano tutte. Un BOM iniziale viene rimosso prima della lettura.