Informazioni sullo strumento
Un semplice diff testuale di due risposte API è rumoroso: chiavi riordinate e spazi diversi risultano come modifiche anche se i dati sono identici. Questo strumento analizza entrambi i documenti e ne confronta la struttura, così vengono segnalate solo le differenze reali. Ognuna è elencata con una posizione in stile JSONPath ($.user.roles[1]) e un tipo: added (aggiunto), removed (rimosso), changed (modificato) o type-changed (tipo cambiato), quest’ultimo è il classico bug “49.99” contro 49.99. Usalo per spiegare un’asserzione fallita, revisionare una modifica di contratto tra versioni di un’API o controllare l’aggiornamento di uno snapshot prima di accettarlo.
Come si usa
- Incolla a sinistra il JSON atteso (o più vecchio) e a destra quello effettivo (o più recente), oppure clicca “Load sample”.
- Leggi l’elenco delle modifiche: ogni riga mostra il tipo di modifica, il percorso e i valori prima → dopo.
- Spunta “Ignore array order” (ignora l’ordine degli array) quando gli array sono in realtà insiemi, come ruoli, tag o risultati di ricerca non ordinati.
- Passa a “Side by side” o “Unified” per vedere le modifiche nel contesto; entrambe le viste ordinano prima le chiavi, quindi i riordinamenti non vengono segnalati.
Confronto JSON (JSON Diff): domande frequenti
Che differenza c’è tra “changed” e “type-changed”?
“Changed” significa che il valore è diverso ma il tipo JSON è lo stesso, ad esempio "pending" che diventa "shipped". “Type-changed” significa che è cambiato il tipo stesso, come un numero diventato stringa o un oggetto diventato null. I cambi di tipo sono spesso bug di contratto che rompono i client fortemente tipizzati anche quando il valore sembra lo stesso.
Come vengono confrontati gli array con “Ignore array order” attivo?
Ogni elemento a sinistra viene abbinato a un elemento profondamente uguale a destra. Gli elementi rimasti vengono segnalati come rimossi o aggiunti al proprio indice. I duplicati contano, quindi [1, 2, 2] e [2, 1] restano diversi. Poiché gli elementi vengono abbinati per uguaglianza completa, un oggetto modificato in un array non ordinato appare come una rimozione più un’aggiunta.
Posso usare questi percorsi nei miei test?
Sì. I percorsi usano la notazione con il punto per le chiavi semplici e quella con le parentesi quadre per chiavi con spazi o simboli: funzionano nel JSONPath Tester e corrispondono direttamente alle asserzioni JSONPath di strumenti come REST Assured o Postman.