JSON Diff

[ MGA PAGKAKAIBA ]
4
4 real · 0 formatting only
Nadagdag1
Natanggal0
Nagbago3
[ ANO ANG NAGBAGO ]
Nagbagosalarynumber
45000
+ 52000
Nagbagotags[1]string
"cebu"
+ "davao"
Nagbago ang uriactiveboolean → string
true
+ "true"
Nadagdagteamstring
+ "Finance"
A value changed TYPE, not just value — a number became a string, or something became null. That is usually the more serious kind of change, because the code reading it was not expecting it.
[ ANO ITO ]

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.

[ MGA TANONG ]

Bakit hindi na lang text diff ang gamitin?

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.

Bakit hindi pagkakaiba ang pagkakasunod ng key pero pagkakaiba ang sa array?

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.

Ano ang ibig sabihin ng “parehong numero, magkaibang pagkakasulat”?

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.

Bakit hiwalay na binabanggit ang pagbabago ng uri?

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.

Ano ang mangyayari sa doblehing key?

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.

Tama bang maihahambing ang napakahabang numero?

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 KOMPUTASYON ]
Ano ang binibilang na pagkakaiba
Ibang indent o pagka-minifyhindi
Ibang pagkakasunod ng keyhindi
Ibang pagkakasunod ng arrayoo
1.0 laban sa 1hiwalay
Numerong naging stringpagbabago ng uri
[ BAKIT MAHALAGA ANG PAGBABAGO NG URI ]

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.

[ SUSUNOD ]
43JSON FormatterTidy them before comparing, or find duplicate keys
48Paghahambing ng TekstoWhen the bytes matter, not the data
63JSON ⇄ CSV ConverterThe same parser, pointed at a spreadsheet
72HTTP Status CodesFor the two responses you are comparing
[ MAHALAGA ]

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.