JSON format karna ek tool ki sabse simple cheez lagti hai: kuch spaces aur
line breaks daal dena taaki insaan ise padh sakein. Zyadatar formatters
bilkul yahi karte hain JSON.parse call karke aur phir JSON.stringify ko
indent argument ke saath call karke. Ye round trip un JSON ke liye kaam
karta hai jo aap haath se likhte hain aur chupke se toot jaata hai un JSON
ke liye jo aap kahin aur se lete hain.
Do bugs jo round trip se aate hain
JSON.parse har number ko JavaScript double mein badalta hai. Ek double
har integer ko Number.MAX_SAFE_INTEGER, jo ki 9007199254740991 hai, ke
baad exact nahi rakh sakta. Ek snowflake ID, database primary key, ya
nanosecond mein timestamp aasani se isse zyada ho sakta hai, aur jab aisa
hota hai, to parsed value ko dobara serialize karne par digits badal jaati
hain. 12345678901234567890 wapas 12345678901234567000 aa jaata hai.
Kisi ko pata nahi chalta jab tak ID kahin downstream galat na ho.
Ye round trip number jaisi dikhne wali object keys ko bhi reorder karta hai,
kyunki JSON.stringify JavaScript object ki khud ki enumerable keys ko ek
specific order mein chalta hai: integer jaise keys pehle, ascending mein, phir
baaki sab insertion order mein. {"2": "b", "1": "a" likha hua document
wapas {"1": "a", "2": "b"} aa jaata hai, jo ki alag document hai bhale
hi har value survive ho gayi.
JSON formatter kya karta hai
Ye tool kabhi JSON.parse nahi call karta. Ye aapka document tokenize karta
hai, token stream ko RFC 8259 ke khilaf validate karta hai, aur un tokens
se reprint karta hai. Ek number exact usi characters ke roop mein copy hota
hai jo aapne likhe, double se re-encode nahi hota. Ek key jahan aapne rakhi
wahin rehti hai.
{"2":"second","1":"first","id":12345678901234567890,"note":"line1\nline2"}
Format dabane par:
{
"2": "second",
"1": "first",
"id": 12345678901234567890,
"note": "line1\nline2"
}
"2" pehle "1" ke rehta hai, aur bees-digit wala id bilkul waisa hi
wapas aata hai jaisa likha tha. Sirf whitespace badla.
Failure padhna
Agar document valid JSON nahi hai, to tool problematic line ko gutter mein mark karta hai aur asli galti ka naam batata hai. Closing brace se pehle ki trailing comma trailing comma ke roop mein report hoti hai, comma wali line par, file ke end par nahan jahan ek basic parser haar jaata hai.
Format vs Minify
Dono buttons wahi reprint karte hain tokens se; sirf whitespace alag hai. Format line breaks aur aapke dwara chuna gaya indent width (2 spaces, 4 spaces, ya tab) daalta hai. Minify har space, tab aur line break hata deta hai jo JSON ko zaroorat nahi hai. Koi bhi value nahi badalta, to dono ko jitni marzi baar dabaya ja sakta hai, ya beech mein switch kiya ja sakta bina dobara paste kiye.
Ise kisi document par try karein jismein lamba ID ho ya numeric keys wali
config file ho, aur result ko JSON.parse se guzarne wale formatter se
compare karein. Fark turant dikh jaata hai.