Så här använder du det
- Klistra in ursprunglig JSON till vänster och ändrad JSON till höger, eller prova exemplet.
- Välj hur arrayer jämförs: efter position eller genom att matcha element, så att ett insatt element rapporteras en gång.
- Läs skillnaderna som en lista eller sida vid sida. Varje skillnad har en sökväg från roten ($).
- Kopiera rapporten för att klistra in den i ett ärende eller en kodgranskning.
Så fungerar det
Båda dokumenten tolkas och jämförs som data, inte som text. Objekt jämförs nyckel för nyckel, så nycklarnas ordning och blanksteg eller indrag spelar ingen roll. Tal jämförs efter värde, så 1 och 1.0 är lika.
Varje skillnad har en sökväg skriven som ett JSONPath-uttryck: $ är roten, .name är en egenskap, [2] är ett arrayindex, och nycklar som inte är enkla namn omges av citattecken, som i $["first-name"]. Fyra typer av skillnader rapporteras: tillagd (endast till höger), borttagen (endast till vänster), ändrad (samma typ, annat värde) och typändrad (till exempel att talet 44.9 blev strängen "44.90", eller att ett värde blev null). När ett helt objekt eller en hel array läggs till eller tas bort rapporteras det en gång på sin egen sökväg i stället för en gång per fält.
Arrayer jämförs som standard efter position: element 0 med element 0, element 1 med element 1. Om ett element infogas i början ser varje efterföljande element ut att vara ändrat. "Matcha flyttade element" justerar först de två arrayerna med hjälp av en längsta gemensam delföljd av lika element, så att en infogning eller borttagning bara rapporteras en gång och resterande element paras ihop. Tillagda element använder sitt index till höger, borttagna element sitt index till vänster. Matchning hoppas över för mycket stora arrayer (över cirka 2 miljoner elementpar), som då jämförs efter position.
Nyckelsökvägar i listan sorteras alfabetiskt inom varje objekt. Upp till 2 000 skillnader visas; den kopierade rapporten innehåller alltid samtliga.
Exempel
Kontrollera en API-ändring
Jämför gårdagens och dagens svar för samma order. Diffen visar att $.status ändrades från "pending" till "shipped", att $.total bytte typ från nummer till sträng, att $.coupon togs bort och att $.customer.phone lades till.
Konfigurationsdrift
Klistra in JSON-konfigurationen från staging och produktion. Eftersom nycklarnas ordning ignoreras visas bara verkliga skillnader som $.cache.ttl 300 → 60, även om filerna sparades av olika verktyg.
Listor med ett infogat element
En produktlista fick ett nytt första element. Vid positionsjämförelse verkar varje produkt vara ändrad; med "Matcha flyttade element" blir resultatet ett enda "Tillagd $[0]".
Vanliga frågor
Hur skiljer sig detta från en textdiff?
En textdiff jämför rader, så omordnade nycklar eller omformatering syns som ändringar. Det här verktyget jämför den tolkade datan, så endast skillnader i värden, typer och struktur rapporteras.
Varför visar en array många ändringar efter en insättning?
I läget ”Efter position” jämförs element på samma index, och en insättning förskjuter alla senare element. Växla till ”Matcha flyttade element” för att först matcha lika element.
Behandlas "1" och 1 som lika?
Nej. Det ena är en sträng och det andra ett tal, så skillnaden rapporteras som en typändring. Värden med samma typ jämförs exakt.
Kan jag jämföra mycket stora filer?
Filer på några megabyte fungerar, men allt bearbetas i webbläsarens minne, så mycket stora dokument kan vara långsamma på mobiler.
Integritet
Båda dokumenten analyseras och jämförs endast i din webbläsare. Inget laddas upp, lagras eller inkluderas i analyser.