JSON Formatter

[ OUTPUT ]
{ "employee": "Juan dela Cruz", "monthlySalary": 30000, "allowances": [ { "type": "transport", "amount": 2000 } ], "regular": true, "separatedOn": null }
Sukat161 B
Mga key7
Lalim3 levels
[ ANO ITO ]

Suriin ang isang dokumento, i-print nang maayos sa indent na gusto mo, paliitin para ipadala, o ayusin ang lahat ng key ng bawat object para maikumpara ang dalawang bersiyon ng iisang file.

Dito binabasa ang dokumento sa halip na iabot sa sariling JSON reader ng browser, sa tatlong dahilan. Hindi maaasahang sinasabi ng parser ng browser KUNG SAAN ang mali — magkaiba ang pananalita at ang posisyon sa Chrome, Safari at Firefox — kaya hindi nito maituturo ang linya. Ginagawa nitong floating-point na halaga ang bawat numero, na nagro-round sa mahahabang id at nag-aalis ng mga zero sa dulo, kaya nasisira ang dokumentong pinaayos mo lamang. At tahimik nitong itinatapon ang paulit-ulit na pangalan ng property, na siya mismong uri ng tahimik na kamalian na sulit mahuli.

Ang string lamang ang isinusulat muli sa halip na panatilihin: nagiging A ang A. Nagbabago ang bytes pero hindi ang halaga, kaya walang nawawala — hindi katulad ng numero, kung saan tunay na magkaiba ang dalawa.

[ MGA TANONG ]

Saan ba eksakto ang syntax error ko?

Ibinibigay ng pahina ang linya at ang hanay, ipinapakita ang linyang may problema, at naglalagay ng caret sa ilalim ng karakter na sumira nito. Karamihan sa error sa JSON ay nawawalang kuwit, kuwit sa dulo o hindi naisarang brace, at pawang hindi nakikita ang tatlo hanggang may tumuro sa kanila.

Bakit nagrereklamo ito tungkol sa trailing comma?

Dahil hindi ito pinapayagan ng JSON, kahit pinapayagan ng JavaScript, Python at ng karamihan sa config formats. Ito ang pinakakaraniwang error sa JSON. Pinapayagan ng JSON5 at JSONC ang trailing commas at comments — kung mayroon ang file mo ng alinman, hindi ito JSON, anuman ang sabi ng extension.

Babaguhin ba ng pag-format ang mga numero ko?

Hindi, at sinadya ito. Karamihan sa formatter ay ginagawang float ang numero at isinusulat itong muli, na tahimik na nagro-round ng mahabang id — ang 1234567890123456789 ay nagiging 1234567890123456800 — at ginagawang 1 ang 1.0. Pinapanatili nito ang bawat numero nang eksaktong gaya ng pagkakasulat mo, digit sa digit.

Ano ang duplicate key at bakit ko ito dapat pansinin?

Hindi ipinagbabawal ng JSON ang parehong pangalan ng property nang dalawang beses sa isang object, at halos bawat parser ay tahimik na itinatago ang huli. Kaya ang {"amount": 500, "amount": 50} ay balidong dokumentong tahimik na nagiging 50. Natutukoy ito nito, sinasabi ang linya, at itinatago ang dalawa — hindi dapat ang formatter ang nagbura ng linya ng datos mo.

Nababago ba ng pag-sort ng keys ang kahulugan ng dokumento ko?

Hindi. Walang bisa ang pagkakasunod ng property sa JSON, kaya ang pinag-ayos na object ay parehong object pa rin. May bisa ang pagkakasunod ng array at hindi ito kailanman ginagalaw. Nakabatay sa character code ang pag-ayos at hindi sa locale, kaya ang parehong file ay pareho ang pagkakaayos sa bawat makina — ang pinag-ayos na file na may diff pa rin ay tatalo sa mismong layunin.

May naia-upload ba kahit saan sa datos ko?

Hindi. Ang parser ay JavaScript na tumatakbo sa tab na ito, at walang kahilingang nagdadala ng dokumento mo. Mas mahalaga ito rito kaysa sa karamihan ng pahina, dahil ang JSON na ipinapasok ng mga tao sa formatter ay madalas tunay na sagot ng API na may tunay na rekord ng kostumer.

[ ANG SINUSURI NITO ]
Ang tatlong pinakakaraniwang kamalian
{"a": 1,}  — kuwit sa dulo
{a: 1}     — pangalang walang panipi
{'a': 1}   — isahang panipi

Wasto silang tatlo sa JavaScript at wala ni isang wasto sa JSON. Tinutukoy ang bawat isa sa kung ano ito sa halip na iulat bilang hindi inaasahang token.

[ HINDI GINAGALAW ANG MGA NUMERO ]
Isang id na 19 digit, naka-format
basahin, saka isulat muli …3456800
itinago nang walang bago …3456789

Mga 15 makabuluhang digit ang kayang hawakan ng double. Anumang mas mahaba — id sa Twitter, Snowflake, sanggunian sa bangko — ay mali nang bumabalik mula sa formatter na dumadaan sa float.

[ ANO ANG SINUSUKAT NITO ]
Sukat UTF-8 bytes, hindi karakter
Lalim antas ng pagkakalagay
Mga key bawat pangalan ng property, kasama ang paulit-ulit
[ SUSUNOD ]
44Base64 Encoder / DecoderLigtas sa UTF-8, dalawang alpabeto, walang ipinapadala
42Gumawa ng PasswordCryptographic na random, at matapat na iniuulat ang entropy
41Gumawa ng QR CodeI-encode ang link o detalye ng Wi-Fi bilang code na mababasa
39Converter ng YunitHaba, timbang, temperatura at apat pa
[ MAHALAGA ]

Mahigpit na binabasa ang mga dokumento ayon sa RFC 8259. Ang JSON5 at JSONC — komento, kuwit sa dulo, key na walang panipi — ay iniuulat na kamalian sa halip na tanggapin. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.