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

Ordinea cheilor este ignorată întotdeauna.

Cum se folosește: JSON Diff

  1. Lipește JSON-ul original în stânga și JSON-ul modificat în dreapta sau deschide două fișiere.
  2. Erorile de sintaxă sunt afișate sub fiecare casetă cu linia și coloana, ca să le poți corecta rapid.
  3. 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ă.
  4. Bifează Ignoră ordinea din array-uri când listele sunt mulțimi, de exemplu tag-uri sau permisiuni.
  5. 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?
Nu. Obiectele JSON sunt neordonate, așa că {"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?
Nu. Ambele documente sunt parsate și comparate în browser. Nimic nu este trimis prin rețea, ceea ce face instrumentul sigur pentru răspunsuri API care conțin tokenuri sau date ale clienților.
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?
Da. Ambele sunt parsate ca același număr, deci nu sunt raportate ca diferență. Un număr și un șir, cum ar fi 1 și "1", sunt diferite și sunt raportate ca modificate.
Pot compara JSON cu comentarii sau virgule la final?
JSON-ul standard nu le permite, așa că o astfel de intrare este semnalată cu linia și coloana exacte. Elimină comentariile sau virgulele ori curăță mai întâi documentul în formatter-ul JSON.

Instrumente similare