JSON Diff: vertaa JSON-objekteja

Liitä kaksi JSON-dokumenttia ja näe tarkalleen, mikä muuttui. Jokainen ero listataan polun mukaan, kuten $.users[2].email, eikä muotoilu tai avainten järjestys aiheuta vääriä hälytyksiä.

Toimii selaimessaEi rekisteröitymistäMitään ei lähetetä

Avainten järjestys ohitetaan aina.

Näin käytät työkalua: JSON Diff

  1. Liitä alkuperäinen JSON vasemmalle ja muokattu JSON oikealle, tai avaa kaksi tiedostoa.
  2. Syntaksivirheet näytetään kunkin kentän alla rivin ja sarakkeen kera, joten voit korjata ne nopeasti.
  3. Lue Muuttuneet polut -taulukko: jokainen rivi kertoo, onko arvo lisätty, poistettu vai muutettu, sekä vanhan ja uuden arvon.
  4. Valitse Ohita taulukoiden järjestys, kun listat ovat joukkoja, esimerkiksi tagit tai oikeudet.
  5. Vieritä rinnakkaisnäkymään nähdäksesi muutokset asiayhteydessään, tai kopioi muutoslista JSONina.

Miksi rakenteellinen JSON-vertailu on tekstivertailua parempi

Tavallinen tekstivertailu vertaa merkkejä ja rivejä, joten kaksi samaa dataa sisältävää JSON-tiedostoa voivat näyttää täysin erilaisilta, jos toinen on pienennetty, eri tavoin sisennetty tai avaimet ovat eri järjestyksessä. Tämä työkalu jäsentää ensin molemmat dokumentit ja vertaa dataa: objekteja verrataan avain kerrallaan järjestyksestä riippumatta, ja numeroita, merkkijonoja, totuusarvoja ja null-arvoja verrataan arvon perusteella. Vain todelliset muutokset raportoidaan.

Miten muutokset raportoidaan

Jokainen ero saa JSONPath-tyylisen sijainnin, kuten $.owner.email tai $.items[3].price, ja yhden kolmesta tyypistä:

  • lisätty: avain tai taulukon alkio on vain muokatussa JSONissa.
  • poistettu: se on vain alkuperäisessä JSONissa.
  • muutettu: se on molemmissa, mutta arvo eroaa, mukaan lukien tyypin muutokset, kuten merkkijonon muuttuminen numeroksi.

Taulukot kohdistetaan pisimmän yhteisen alijonon algoritmilla, joten yhden alkion lisääminen listan alkuun raportoidaan yhtenä lisäyksenä sen sijaan, että jokainen seuraava alkio merkittäisiin muuttuneeksi.

Taulukoiden järjestyksen ohittaminen

Monet API:t palauttavat listoja, joiden järjestyksellä ei ole merkitystä, kuten roolit, tagit tai tunnisteet. Kun Ohita taulukoiden järjestys on päällä, taulukoita verrataan kokoelmina: alkio lasketaan lisätyksi tai poistetuksi vain, jos toisella puolella ei ole sille samaa vastinetta. Rinnakkaisnäkymä lajittelee tällöin taulukon alkiot, jotta samat listat asettuvat kohdakkain.

Tyypillisiä käyttötapoja

Vertaa API-vastauksia staging- ja tuotantoympäristön välillä, tarkista mitä migraatio muutti asetustiedostossa, käy läpi kahden package.json- tai tsconfig-tiedoston erot ja debuggaa snapshot-testejä.

Usein kysytyt kysymykset

Onko avainten järjestyksellä merkitystä JSONia verrattaessa?
Ei. JSON-objektit ovat järjestämättömiä, joten {"a":1,"b":2} ja {"b":2,"a":1} raportoidaan samoiksi. Taulukoiden järjestyksellä on oletuksena merkitystä, koska taulukot ovat järjestettyjä, mutta voit kytkeä sen pois asetuksella Ohita taulukoiden järjestys.
Lähetetäänkö JSONini palvelimelle?
Ei. Molemmat dokumentit jäsennetään ja verrataan selaimessasi. Mitään ei lähetetä verkon yli, joten työkalu on turvallinen myös tokeneita tai asiakasdataa sisältäville API-vastauksille.
Mitä polut kuten $.users[2].email tarkoittavat?
$ on dokumentin juuri, .users on avain ja [2] on taulukon kolmas alkio (indeksit alkavat nollasta). Välilyöntejä tai erikoismerkkejä sisältävät avaimet kirjoitetaan hakasulkeisiin, kuten $["first name"].
Onko 1 sama kuin 1.0?
Kyllä. Molemmat jäsentyvät samaksi numeroksi, joten niitä ei raportoida erona. Numero ja merkkijono, kuten 1 ja "1", ovat eri arvoja ja raportoidaan muuttuneina.
Voinko verrata JSONia, jossa on kommentteja tai loppupilkkuja?
Standardi-JSON ei salli niitä, joten tällainen syöte merkitään tarkalla rivillä ja sarakkeella. Poista kommentit tai pilkut, tai siisti dokumentti ensin JSON-muotoilijalla.

Aiheeseen liittyvät työkalut