Panoramica / Sviluppo e codice / Confronta JSON
Sviluppo e codice 100% nel browser e offline

Confronta JSON

Confronta due documenti JSON e vedi ogni valore aggiunto, rimosso o modificato con il suo percorso JSON Pointer. Copia il risultato come testo o come JSON Patch.

Incolla o scrivi l'input; il risultato appare subito e gli errori sono mostrati sotto.

I tuoi file e dati non lasciano mai il browser: non viene caricato nulla.

Gli oggetti si confrontano per chiave, quindi l’ordine delle chiavi non conta mai. Gli array si confrontano per posizione, a meno che tu ignori l’ordine. In quel caso un elemento modificato appare come un elemento rimosso e uno aggiunto.

Differenze

    Limiti: 2.000.000 di caratteri per lato. I numeri sono letti con JSON.parse, quindi gli interi oltre 2^53 perdono precisione. Se una chiave compare due volte nel testo, vale l’ultimo valore. L’elenco mostra le prime 1.000 differenze; i pulsanti di copia le usano tutte.

    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

    1. Incolla l’originale nel riquadro di sinistra e la versione modificata in quello di destra. All’apertura trovi già un esempio.
    2. 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.
    3. Premi Formatta entrambi per indentare il JSON valido, oppure Scambia i lati se li hai incollati al contrario.
    4. Attiva Ignora l’ordine degli array se l’ordine degli elementi non ti interessa.
    5. 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.

    Domande frequenti (FAQ)

    Incolla l’originale a sinistra e la versione modificata a destra. Dopo una breve pausa compare l’elenco con percorso, tipo di modifica e valori prima e dopo.