Confronto strutturale JSON

Confronta due strutture JSON ed esamina aggiunte, rimozioni e modifiche in percorsi espliciti, preservando la scrittura dei numeri senza arrotondamenti.

Questa pagina mostra gli strumenti disponibili in questa lingua nell’ambito attuale. Non significa che ogni strumento del sito sia tradotto in tutte le lingue.

L’elaborazione è locale, senza caricare gli input né salvarli automaticamente. Ogni input è limitato a 256 KiB in UTF-8, 512 KiB in totale; profondità 32, 30.000 valori per input, 2000 differenze e un rapporto di 1 MiB. Il confronto si interrompe dopo 5 secondi.

L’ordine delle chiavi degli oggetti viene ignorato. Gli array vengono confrontati per indice senza rilevare spostamenti. I numeri vengono confrontati in base alla loro scrittura: 1, 1.0 e 1e0 sono diversi, senza arrotondare i numeri grandi. Le stringhe JSON vengono decodificate per il confronto senza normalizzazione Unicode. Cambiare il tipo di un ramo, aggiungerlo o rimuoverlo produce una riga contenente l’intero ramo.

Input del confronto

Come si usa

Incolla i testi JSON prima e dopo, poi avvia il confronto. Esamina tipo, percorso e testo JSON prima e dopo ogni modifica; passa tra le pagine dell’anteprima quando serve. Scegli di copiare il rapporto completo o scaricarlo come json-diff.json. Modificare un input invalida il risultato precedente; il rapporto non sostituisce nessuno dei due input.

Prova un esempio

Prima: {"n":1,"a":[1,2]}; dopo: {"a":[2,1],"n":1.0}. Ci sono tre modifiche: /n dal testo 1 al testo 1.0, /a/0 da 1 a 2 e /a/1 da 2 a 1. Cambiare soltanto l’ordine delle due chiavi dell’oggetto non aggiunge modifiche. La chiave a/b~c appare nel percorso /a~1b~0c.

Supporto e limiti

L’ordine delle chiavi degli oggetti viene ignorato, ma gli array vengono confrontati per indice; non si deducono spostamenti di elementi o corrispondenze tra insiemi. I numeri vengono confrontati secondo la scrittura originale: 1, 1.0 e 1e0 sono diversi e non vengono mai convertiti in Number. Le stringhe JSON vengono decodificate per il confronto senza normalizzazione Unicode. Aggiungere o rimuovere un ramo o cambiarne il tipo produce una riga contenente l’intero ramo. Un percorso vuoto indica la radice; JSON Pointer rappresenta ~ con ~0 e / con ~1. I campi before e after del rapporto sono stringhe contenenti JSON compatto, non valori numerici arrotondati. Un campo viene omesso quando quel lato è assente, mentre JSON null è rappresentato dalla stringa "null". Il rapporto descrive differenze; non è un JSON Patch per applicare modifiche. L’elaborazione rimane nel browser senza eseguire il contenuto JSON, caricarlo né salvarlo o copiarlo automaticamente.

Domande frequenti

Un risultato uguale significa che i testi sono identici byte per byte?

No. Gli spazi fuori dalle stringhe, l’ordine delle chiavi degli oggetti e la scrittura degli escape dei caratteri possono differire mentre i valori restano uguali secondo queste regole. La lista changes è quindi vuota e il rapporto può comunque essere copiato o scaricato. Al contrario, una diversa scrittura di un numero o un diverso ordine degli elementi di un array conta come differenza anche se il significato sembra simile.

Strumenti correlati