JSON Diff: Ikumpara ang mga JSON Object

Mag-paste ng dalawang JSON document para makita kung ano talaga ang nagbago. Nakalista ang bawat pagkakaiba ayon sa path, gaya ng $.users[2].email, at hindi kailanman nagdudulot ng maling alarma ang formatting o ayos ng key.

Tumatakbo sa browser moWalang sign-upWalang ina-upload

Laging hindi pinapansin ang ayos ng mga key.

Paano gamitin ang JSON Diff

  1. I-paste ang orihinal na JSON sa kaliwa at ang binagong JSON sa kanan, o magbukas ng dalawang file.
  2. Ipinapakita ang mga syntax error sa ilalim ng bawat box kasama ang linya at column, para mabilis mo itong maayos.
  3. Basahin ang table na Mga binagong path: ipinapakita ng bawat row kung idinagdag, inalis o binago ang isang value, kasama ang luma at bagong value.
  4. I-tick ang Huwag pansinin ang ayos ng array kapag set ang mga listahan, halimbawa mga tag o permission.
  5. Mag-scroll sa side-by-side na view para makita ang mga pagbabago sa context, o kopyahin ang listahan ng pagbabago bilang JSON.

Bakit mas mahusay ang structural na JSON diff kaysa text diff

Kinukumpara ng ordinaryong text diff ang mga character at linya, kaya ang dalawang JSON file na may parehong data ay puwedeng magmukhang ganap na magkaiba kung minified ang isa, iba ang indentation o iba ang ayos ng mga key. Pina-parse muna ng tool na ito ang dalawang document at kinukumpara ang data: kinukumpara ang mga object key por key anuman ang ayos, at kinukumpara ayon sa value ang mga number, string, boolean at null. Mga totoong pagbabago lang ang iniuulat.

Paano iniuulat ang mga pagbabago

May lokasyon na estilong JSONPath ang bawat pagkakaiba, gaya ng $.owner.email o $.items[3].price, at isa sa tatlong uri:

  • idinagdag: nasa binagong JSON lang ang key o array element.
  • inalis: nasa orihinal na JSON lang ito.
  • binago: nasa pareho ito pero magkaiba ang value, kasama ang pagbabago ng type gaya ng string na naging number.

Ina-align ang mga array gamit ang longest-common-subsequence algorithm, kaya ang pagsingit ng isang element sa simula ng listahan ay iniuulat bilang iisang pagdaragdag sa halip na markahang binago ang bawat kasunod na element.

Pagbalewala sa ayos ng array

Maraming API ang nagbabalik ng mga listahang walang kahulugan ang ayos, gaya ng mga role, tag o ID. Kapag naka-on ang Huwag pansinin ang ayos ng array, kinukumpara ang mga array bilang koleksyon: itinuturing lang na idinagdag o inalis ang isang element kung wala itong katumbas sa kabilang panig. Inaayos naman ng side-by-side na view ang mga array element para magkahanay ang magkaparehong listahan.

Karaniwang gamit

Ikumpara ang mga API response sa pagitan ng staging at production, tingnan kung ano ang binago ng isang migration sa config file, i-review ang pagkakaiba ng dalawang package.json o tsconfig file, at i-debug ang mga snapshot test.

Mga madalas itanong

Mahalaga ba ang ayos ng key kapag nagkukumpara ng JSON?
Hindi. Walang ayos ang mga JSON object, kaya iniuulat na magkapareho ang {"a":1,"b":2} at {"b":2,"a":1}. Mahalaga ang ayos ng array bilang default dahil may ayos ang mga array, pero puwede mo itong i-off gamit ang Huwag pansinin ang ayos ng array.
Ina-upload ba sa server ang JSON ko?
Hindi. Pina-parse at kinukumpara ang dalawang document sa iyong browser. Walang ipinapadala sa network, kaya ligtas ang tool para sa mga API response na may token o data ng customer.
Ano ang ibig sabihin ng mga path gaya ng $.users[2].email?
Ang $ ang root ng document, key ang .users, at ang [2] ang ikatlong element ng array (nagsisimula sa 0 ang index). Isinusulat sa loob ng bracket ang mga key na may space o special character, gaya ng $["first name"].
Pareho ba ang 1 at 1.0?
Oo. Parehong number ang kinalalabasan nila kapag na-parse, kaya hindi sila iniuulat bilang pagkakaiba. Magkaiba ang number at string, gaya ng 1 at "1", at iniuulat ang mga ito bilang binago.
Puwede ko bang ikumpara ang JSON na may comment o trailing comma?
Hindi pinapayagan ng standard na JSON ang mga ito, kaya mina-markahan ang ganitong input kasama ang eksaktong linya at column. Alisin ang mga comment o comma, o linisin muna ang document sa JSON Formatter.

Mga kaugnay na tool