tigtools

JSON Diff

Lipiți două documente JSON pentru a vedea exact ce valori diferă, listate după cale, cum ar fi $.order.items[2].price.

Rulează în browser Fără înregistrare

Comparare array-uri
Afișează

Cum se folosește

  1. Lipiți JSON-ul original în stânga și JSON-ul modificat în dreapta sau încercați exemplul.
  2. Alegeți cum sunt comparate array-urile: după poziție sau potrivind elementele, astfel încât un element inserat să fie raportat o singură dată.
  3. Citiți diferențele ca listă sau una lângă alta. Fiecare are o cale de la rădăcină ($).
  4. Copiați raportul pentru a-l lipi într-un tichet sau într-un code review.

Cum funcționează

Ambele documente sunt analizate și comparate ca date, nu ca text. Obiectele sunt comparate cheie cu cheie, astfel încât ordinea cheilor și spațiile albe sau indentarea nu contează. Numerele sunt comparate după valoare, deci 1 și 1.0 sunt egale.

Fiecare diferență are o cale scrisă ca o expresie JSONPath: $ este rădăcina, .name este o proprietate, [2] este un indice de tablou, iar cheile care nu sunt nume simple sunt puse între ghilimele, ca în $["first-name"]. Sunt raportate patru tipuri de diferențe: adăugat (doar în dreapta), eliminat (doar în stânga), modificat (același tip, valoare diferită) și tip schimbat (de exemplu, numărul 44.9 a devenit șirul "44.90", sau o valoare a devenit null). Atunci când un întreg obiect sau tablou este adăugat sau eliminat, acesta este raportat o singură dată la calea sa, nu o dată pentru fiecare câmp.

Tablourile sunt comparate după poziție în mod implicit: elementul 0 cu elementul 0, elementul 1 cu elementul 1. Dacă un element este inserat la început, toate elementele următoare par apoi modificate. „Potrivește elementele mutate” aliniază mai întâi cele două tablouri folosind cea mai lungă subsecvență comună de elemente egale, astfel încât o inserare sau o eliminare este raportată o singură dată, iar elementele rămase sunt împerecheate. Elementele adăugate folosesc indicele din dreapta, iar cele eliminate pe cel din stânga. Potrivirea este omisă pentru tablouri foarte mari (peste aproximativ 2 milioane de perechi de elemente), care sunt apoi comparate după poziție.

Căile cheilor din listă sunt sortate alfabetic în cadrul fiecărui obiect. Sunt afișate până la 2.000 de diferențe; raportul copiat conține întotdeauna toate diferențele.

Exemple

Verificarea unei modificări de API

Comparați răspunsul de ieri cu cel de azi pentru aceeași comandă. Diferențele arată că $.status s-a schimbat din "pending" în "shipped", $.total și-a schimbat tipul din număr în șir, $.coupon a fost eliminat, iar $.customer.phone a fost adăugat.

Derivă de configurare

Lipiți configurația JSON din staging și din producție. Deoarece ordinea cheilor este ignorată, apar doar diferențele reale, cum ar fi $.cache.ttl 300 → 60, chiar dacă fișierele au fost salvate de instrumente diferite.

Liste cu un element inserat

O listă de produse a primit un nou prim element. După poziție, fiecare produs pare modificat; cu „Potrivește elementele mutate”, rezultatul este un singur „Adăugat $[0]”.

Întrebări frecvente

Cu ce este diferit față de o comparație de tip text?

O comparație de tip text compară linii, astfel încât reordonarea cheilor sau reformatarea apar ca modificări. Acest instrument compară datele analizate, astfel încât sunt raportate doar diferențele de valori, tipuri și structură.

De ce un array afișează multe modificări după o singură inserare?

În modul „După poziție”, elementele sunt comparate la același index, iar o inserare deplasează fiecare element următor. Comutați la „Potrivirea elementelor mutate” pentru a alinia mai întâi elementele egale.

Sunt „1” și 1 tratate ca fiind egale?

Nu. Unul este string, iar celălalt număr, astfel că diferența este raportată ca schimbare de tip. Valorile cu același tip sunt comparate exact.

Pot compara fișiere foarte mari?

Fișiere de câțiva MB funcționează, dar totul este procesat în memoria browserului, astfel că documentele foarte mari pot fi lente pe telefoane.

Confidențialitate

Ambele documente sunt analizate și comparate doar în browserul dvs. Nimic nu este încărcat, stocat sau inclus în analize.