Ang text diff sa JSON ay sumasagot sa maling tanong. Baguhin ang indent, ayusin ang pagkakasunod ng key, i-minify — at iuulat ng line diff na nagbago ang bawat linya gayong pareho ang datos.
Kaya ayon sa istruktura ang paghahambing: pinapa-parse ang dalawang panig at nilalakad ang puno ayon sa PATH. Nagbago ang users[2].salary, saan man ito nakaupo sa file.
Ang pagkakasunod ng key ay hindi pagkakaiba; ang pagkakasunod ng array ay oo. Iyan ang tanging pasyang pang-hatol dito, at sinusunod nito ang kahulugan mismo ng dalawa: ang JSON object ay walang pagkakasunod, ang array ay may pagkakasunod.
At ang 1.0 laban sa 1 ay parehong numero at magkaibang dokumento. Hiwalay itong nakalista — ang pagtatago nito ay nawawalan ng tunay na pagkakaiba, ang pagtawag ditong pagbabago ay labis.
Dahil maling tanong ang sinasagot ng text diff sa JSON. Baguhin ang anyo ng dokumento — palitan ang indent, ayusin ang key, paliitin ito — at iuulat ng line diff na nagbago ang bawat linya gayong magkapareho ang datos. Magpalitan ng dalawang key at iuulat nitong dalawang pagtanggal at dalawang pagdagdag gayong walang nagbago. Inihahambing nito ang na-parse na istruktura ayon sa landas, kaya nakikita nito ang tunay na pagkakaiba.
Dahil iyon ang pagkakaiba ng dalawang bagay. Ang JSON object ay walang-ayos na hanay ng miyembro, kaya iisa ang {"a":1,"b":2} at ang {"b":2,"a":1} at ibibigay ng alinmang parser ang parehong resulta sa code mo. Ang array ay pagkakasunod, kaya talagang magkaiba ang [1,2] at ang [2,1]. Ang differ na pareho ang trato sa dalawa ay mali sa isang direksiyon o sa isa pa.
Na ang isang panig ay may 1.0 kung saan ang isa ay may 1, o 1e3 kung saan ang isa ay may 1000. Parehong numero iyon at magkaibang dokumento. Ang pagtatago nito ay magwawala ng tunay na pagkakaiba ng dalawang file; ang pagtawag ditong pagbabago ay magpapamukhang pagbabago ng datos ang isang pag-aayos ng anyo. Kaya nakalista itong hiwalay at pinapalabo, at maiaalis mo ito sa isang sulyap.
Dahil kadalasan ito ang mas seryoso. Ang numerong nagiging string, o ang halagang nagiging null, ay sumisira sa code na nagbabasa nito sa paraang hindi ginagawa ng nabagong halaga — hindi umaasa ng ibang hugis ang tumatanggap. Sulit itong mapansin bago ang mga nabagong halaga.
Legal na JSON ang doblehing key at pinapanatili ng bawat parser ang huli, kaya iyon ang inihahambing — ang halagang talagang makikita ng code mo. Iniuulat ng JSON Formatter ang doble kung gusto mo silang hanapin.
Oo. Inihahambing ang dalawang panig gaya ng pagkakasulat nila at hindi sa pamamagitan ng floating-point na halaga, kaya ang dalawang 19-digit na integer na nagkakaiba sa huling puwesto ay dalawa pa ring magkaibang halaga. Ang differ na gumagamit ng JSON.parse ay pag-iisahin ang dalawa at iuulat na walang pagbabago.
Ang numerong naging string, o ang halagang naging null, ay nakakasira sa code na bumabasa nito sa paraang hindi ginagawa ng binagong halaga. Hindi inaasahan ng bumabasa ang ibang hugis.
Runs entirely in your browser; nothing is transmitted. This compares data, not text — indentation, key order and number formatting are invisible to it by design. Use Text Comparison when the bytes are what matter. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.