JSON Diff: compară obiecte JSON
Lipește două documente JSON pentru a vedea exact ce s-a schimbat. Fiecare diferență este listată după cale, de exemplu $.users[2].email, iar formatarea sau ordinea cheilor nu provoacă alarme false.
Rulează în browserFără înregistrareNimic nu este încărcat
Căi modificate
| Modificare | Cale | Valoare veche | Valoare nouă |
|---|
Cum se folosește: JSON Diff
- Lipește JSON-ul original în stânga și JSON-ul modificat în dreapta sau deschide două fișiere.
- Erorile de sintaxă sunt afișate sub fiecare casetă cu linia și coloana, ca să le poți corecta rapid.
- Citește tabelul Căi modificate: fiecare rând arată dacă o valoare a fost adăugată, eliminată sau modificată, cu valorile veche și nouă.
- Bifează Ignoră ordinea din array-uri când listele sunt mulțimi, de exemplu tag-uri sau permisiuni.
- Derulează la vizualizarea în paralel pentru a vedea modificările în context sau copiază lista de modificări ca JSON.
De ce un diff JSON structural e mai bun decât unul de text
Un diff de text simplu compară caractere și linii, așa că două fișiere JSON cu aceleași date pot arăta complet diferit dacă unul este minificat, indentat altfel sau are cheile în altă ordine. Acest instrument parsează mai întâi ambele documente și compară datele: obiectele sunt comparate cheie cu cheie, indiferent de ordine, iar numerele, șirurile, valorile booleene și null sunt comparate după valoare. Sunt raportate doar modificările reale.
Cum sunt raportate modificările
Fiecare diferență primește o locație în stil JSONPath, cum ar fi $.owner.email sau $.items[3].price, și unul dintre trei tipuri:
- adăugat: cheia sau elementul de array există doar în JSON-ul modificat.
- eliminat: există doar în JSON-ul original.
- modificat: există în ambele, dar valoarea diferă, inclusiv schimbări de tip, cum ar fi un șir care devine număr.
Array-urile sunt aliniate cu un algoritm de cea mai lungă subsecvență comună, așa că inserarea unui element la începutul unei liste este raportată ca o singură adăugare, în loc ca fiecare element următor să fie marcat ca modificat.
Ignorarea ordinii din array-uri
Multe API-uri returnează liste a căror ordine nu are semnificație, cum ar fi roluri, tag-uri sau ID-uri. Cu Ignoră ordinea din array-uri activat, array-urile sunt comparate ca colecții: un element contează ca adăugat sau eliminat doar dacă nu are un corespondent egal în cealaltă parte. Vizualizarea în paralel sortează atunci elementele array-urilor, astfel încât listele egale să se alinieze.
Utilizări tipice
Compararea răspunsurilor API între staging și producție, verificarea a ce a schimbat o migrare într-un fișier de configurare, revizuirea diferențelor dintre două fișiere package.json sau tsconfig și depanarea testelor snapshot.
Întrebări frecvente
Contează ordinea cheilor când compar JSON?
{"a":1,"b":2} și {"b":2,"a":1} sunt raportate ca egale. Ordinea din array-uri contează implicit, deoarece array-urile sunt ordonate, dar o poți dezactiva cu Ignoră ordinea din array-uri.Este JSON-ul meu încărcat pe un server?
Ce înseamnă căile de tipul $.users[2].email?
$ este rădăcina documentului, .users este o cheie, iar [2] este al treilea element al unui array (indicii încep de la 0). Cheile cu spații sau caractere speciale sunt scrise între paranteze, ca $["first name"].Este 1 egal cu 1.0?
1 și "1", sunt diferite și sunt raportate ca modificate.