JSON Formatter dhe validues
Ngjitni çfarëdo JSON në fushën më lart dhe ky JSON formatter dhe validues e kontrollon ndërsa shkruani. Të dhënat e vlefshme formatohen me dhëmbëzimin që zgjidhni ose minifikohen në një rresht të vetëm. Për të dhënat e pavlefshme merrni një gabim të saktë me rreshtin dhe kolonën, një fragment të theksuar dhe, për gabimet e zakonshme, rregullim me një klikim. Gjithçka ekzekutohet në shfletuesin tuaj, kështu që përgjigjet e API-ve, skedarët e konfigurimit dhe eksportet nuk largohen kurrë nga kompjuteri juaj.
Çfarë bën ky JSON formatter
- Formatim i lexueshëm i JSON me 2 hapësira, 4 hapësira ose tabulime. Rezultati ruan renditjen origjinale të çelësave, përveç nëse aktivizoni Rendit çelësat.
- Minifikim i JSON duke hequr çdo hapësirë dhe kalim rreshti. Treguesi i madhësisë nën rezultat tregon sa bajte keni kursyer.
- Validim i JSON në kohë reale sipas RFC 8259, standardit aktual të JSON. Rreshti i statusit bëhet i gjelbër sapo dokumenti është i saktë.
- Rregullim automatik i gabimeve të zakonshme: presje të tepërta në fund, thonjëza teke, çelësa pa thonjëza, komente, literalet e stilit Python
True,NonedheNaN, numra si.5ose+1. - Ngarkim skedarësh me butonin Hap skedarin ose duke zvarritur një skedar
.jsonmbi fushën e hyrjes. Pastaj shkarkoni rezultatin ose dërgojeni përsëri te hyrja për një kalim tjetër.
Validues JSON: pse mesazhi i gabimit ka më shumë rëndësi se ngjyra e kuqe
Shumica e validuesve online thonë vetëm se diçka nuk shkon. Shfletuesit nuk janë shumë më mirë: JSON.parse në Chrome raporton Unexpected token } in JSON at position 148, ndërsa Firefox thotë expected property name or '}', dhe asnjëri nuk ju tregon cilin rresht duhet të shikoni. Ky mjet ka parserin e vet, i cili mban mend ku fillon çdo token. Kur ndalon, merrni rreshtin dhe kolonën, një fragment të atij rreshti me shenjën ^ nën karakterin problematik dhe një këshillë në gjuhë të thjeshtë, si Ndoshta mungon presja midis dy vetive. Butoni Shko te gabimi e çon kursorin drejt e në atë pozicion të hyrjes.
Gabimet më të shpeshta që shohim në dokumentet e ngjitura:
| Hyrja | Problemi | JSON i saktë |
|---|---|---|
{'name': 'Ada'} | thonjëza teke | {"name": "Ada"} |
{name: "Ada"} | çelës pa thonjëza | {"name": "Ada"} |
[1, 2, 3,] | presje e tepërt në fund | [1, 2, 3] |
{"a": 1 "b": 2} | mungon presja | {"a": 1, "b": 2} |
{"ok": True} | literal Python | {"ok": true} |
{"x": 007} | zero në fillim | {"x": 7} ose {"x": "007"} |
// comment | koment | nuk lejohet në JSON |
Butoni Ma rregullo i ndreq të gjitha këto, përveç presjes që mungon dhe zeros në fillim. Rregullimi është qëllimisht i kujdesshëm: nuk hamendëson kurrë se ku duhet presja që mungon, sepse një presje në vendin e gabuar ndryshon kuptimin e të dhënave, dhe 007 mund të jetë menduar si numri 7 ose si kod. Në këto raste merrni pozicionin e saktë.
Numrat e mëdhenj, renditja e çelësave dhe gjëra të tjera që zakonisht prishen
Shumë formatues punojnë duke thirrur JSON.parse dhe pastaj JSON.stringify. Ky cikël i dëmton të dhënat pa u vënë re. Një ID e Twitter ose Snowflake si 1234567890123456789 e tejkalon kufirin 2^53 të numrave në JavaScript dhe kthehet si 1234567890123456800. Vlera 1.0 bëhet 1, dhe 1e3 bëhet 1000. Ky formatues nuk i konverton kurrë numrat në presje lundruese. Ai e kopjon çdo literal saktësisht siç është shkruar, kështu që rezultati është riformatim besnik i hyrjes, jo rinterpretim i saj. E njëjta gjë vlen për sekuencat escape brenda vlerave tekstuale: "\u00e9" mbetet "\u00e9" dhe nuk shndërrohet në "é".
Edhe renditja e çelësave ruhet. Specifikimi i JSON thotë se anëtarët e një objekti nuk kanë renditje, por skedarët e konfigurimit, të dhënat e testeve dhe rishikimet e kodit lexohen shumë më mirë kur renditja është e qëndrueshme. Nëse preferoni një formë kanonike, për shembull për të krahasuar dy përgjigje API në një mjet diff, aktivizoni Rendit çelësat dhe të dy dokumentet do t’i rendisin vetitë sipas alfabetit në çdo nivel të strukturës.
Formatim JSON apo minifikim JSON: kur të përdorni secilin
JSON-i i formatuar është për njerëzit. Përdoreni kur rishikoni një përgjigje API, kur shkruani një package.json, tsconfig.json ose një dokument OpenAPI, ose kur ruani të dhëna testimi në një repozitor ku diff-et duhet të tregojnë një ndryshim për rresht. Dy hapësira janë konventa në botën e JavaScript, katër hapësira janë të zakonshme në projektet Python dhe .NET, ndërsa tabulimet i lejojnë çdo lexuesi të zgjedhë gjerësinë e vet.
JSON-i i minifikuar është për makinat. Hapësirat zakonisht përbëjnë 20 deri në 40 përqind të një dokumenti të formatuar, kështu që heqja e tyre zvogëlon të dhënat që u dërgohen shfletuesve, vlerat e ruajtura në Redis ose në një kolonë të bazës së të dhënave dhe atributet data-* të futura në HTML. Gzip e ngushton një pjesë të këtij dallimi, por versioni i minifikuar prapë kompresohet në një rezultat më të vogël. Treguesi i madhësisë nën rezultat tregon dallimin e saktë për dokumentin tuaj.
Puna me JSON në terminal dhe në editorë
Për skedarët që i përpunoni shpesh, një mjet i rreshtit të komandave është më i shpejtë se çdo faqe interneti. jq . file.json e formaton, jq -c . file.json e minifikon, dhe python -m json.tool file.json funksionon kudo ku është instaluar Python. Visual Studio Code e formaton JSON-in me Shift+Alt+F dhe e validon sipas një skeme kur shtoni vetinë $schema. Kjo faqe është për rastet e tjera: një përgjigje e kopjuar nga skeda Network, një rresht nga logjet, një fragment konfigurimi nga një wiki, ose një kontroll i shpejtë në një kompjuter ku nuk mund të instaloni asgjë.
Mjete të ngjashme në këtë faqe: koduesi dhe dekoduesi Base64 dekodon pjesën payload të një JWT, e cila është JSON i koduar në Base64url. Konvertuesi i timestamp-it Unix i shndërron numrat createdAt që gjenden në shumicën e përgjigjeve API në data të lexueshme, ndërsa dekoduesi UUID ju tregon versionin dhe vulën kohore të identifikuesve në të dhënat tuaja. Mjete të tjera gjeni te mjetet për zhvilluesit.
Pyetje të shpeshta
A ngarkohet JSON-i im në një server?
Jo. Analizimi, formatimi dhe rregullimi ekzekutohen tërësisht në shfletuesin tuaj, në JavaScript. Pasi faqja të jetë ngarkuar, mund ta shkëputni rrjetin dhe mjeti vazhdon të funksionojë. Asgjë nuk regjistrohet dhe asgjë nuk ruhet.Pse validuesi i refuzon komentet kur editori im i pranon?
Komentet u hoqën qëllimisht nga JSON nga autori i tij, Douglas Crockford, për të mos lejuar që formati të përdorej për direktiva të parserit. Skedarë sitsconfig.json ose .vscode/settings.json teknikisht janë JSONC, një mbibashkësi që editorët e mbështesin. Parserët e rreptë në API, në bazat e të dhënave dhe në shumicën e gjuhëve të programimit i refuzojnë komentet. Butoni i rregullimit i heq ato, që rezultati të jetë i vlefshëm kudo.
A mund të formatoj JSON Lines ose disa objekte njëherësh?
Një dokument JSON përmban saktësisht një vlerë. Nëse ngjitni disa objekte të ndara me presje ose me rreshta të rinj, validuesi ndalon te vlera e parë e tepërt. Vendosini brenda kllapave katrore për të krijuar një array, pastaj formatoni. Butoni i rregullimit nuk e bën këtë automatikisht, sepse nuk mund ta dijë nëse hyrja ishte menduar si një dokument i vetëm.Sa është madhësia maksimale?
Nuk ka kufi të caktuar. Dokumentet prej disa megabajtësh formatohen në një laptop për shumë më pak se një sekondë. Ngjyrosja e sintaksës çaktivizohet mbi rreth 400 kB që faqja të mbetet e shpejtë, por kopjimi dhe shkarkimi vazhdojnë të funksionojnë.A i ndryshon të dhënat renditja e çelësave?
Jo. Objektet në JSON sipas përkufizimit nuk kanë renditje, shihni artikullin për JSON në Wikipedia, kështu që një parser e lexon dokumentin e renditur dhe atë origjinal si të njëjtën vlerë. Elementet e array-ve nuk zhvendosen kurrë, sepse renditja e tyre është pjesë e të dhënave.Si ta përgatis JSON-in me escape për ta futur brenda një string-u?
Fillimisht minifikojeni, pastaj vendosni një backslash para çdo backslash-i dhe para çdo thonjëze dyshe. Shumë gjuhë e ofrojnë këtë drejtpërdrejt:JSON.stringify(JSON.stringify(obj)) në JavaScript ose json.dumps(json.dumps(obj)) në Python prodhojnë një string JSON që përmban tekstin JSON.