JSON formatter ja validaattori

Acrafto Team Kehittäjät
Päivitetty
Odotetaan syötettä. Liitä JSON yllä olevaan kenttään tai pudota siihen .json-tiedosto.

Liitä mikä tahansa JSON yllä olevaan kenttään, niin tämä JSON formatter ja validaattori tarkistaa sen jo kirjoittaessasi. Kelvollinen syöte muotoillaan valitsemallasi sisennyksellä tai tiivistetään yhdelle riville (minify). Virheellisestä syötteestä saat tarkan virheilmoituksen rivin ja sarakkeen kanssa, korostetun otteen ja tavallisimpiin virheisiin korjauksen yhdellä napsautuksella. Kaikki tapahtuu selaimessasi, joten API-vastaukset, konfiguraatiotiedostot ja datavienit eivät koskaan poistu tietokoneeltasi.

Mitä tämä JSON formatter tekee

  • Muotoile JSON (beautify) kahden tai neljän välilyönnin tai sarkainten sisennyksellä. Tulos säilyttää avainten alkuperäisen järjestyksen, ellet valitse kohtaa Järjestä avaimet.
  • Tiivistä JSON (minify) poistamalla kaikki välilyönnit ja rivinvaihdot. Tuloksen alla oleva kokolukema näyttää, montako tavua säästit.
  • Validoi JSON reaaliajassa nykyistä JSON-standardia RFC 8259 vasten. Tilarivi muuttuu vihreäksi heti, kun dokumentti on oikein.
  • Korjaa yleiset virheet automaattisesti: ylimääräiset pilkut, yksinkertaiset lainausmerkit, avaimet ilman lainausmerkkejä, kommentit, Pythonin tyyliset True, None ja NaN sekä luvut kuten .5 tai +1.
  • Avaa tiedostoja Avaa tiedosto -painikkeella tai vetämällä .json-tiedoston syötekenttään. Lataa sitten tulos tai siirrä se takaisin syötteeksi uutta käsittelykertaa varten.

Miksi virheilmoitus on tärkeämpi kuin punainen väri

Useimmat verkon JSON-validaattorit kertovat vain, että jokin on vialla. Selaimet eivät ole paljon parempia: Chromen JSON.parse ilmoittaa Unexpected token } in JSON at position 148 ja Firefox expected property name or '}', eikä kumpikaan kerro, mitä riviä pitäisi katsoa. Tässä työkalussa on oma jäsennin, joka muistaa, mistä kohdasta jokainen merkki alkaa. Kun jäsennys pysähtyy, saat rivin ja sarakkeen, otteen kyseiseltä riviltä ^-merkillä virheellisen merkin alla sekä selkokielisen vihjeen, kuten Kahden ominaisuuden välistä puuttuu luultavasti pilkku. Siirry virheeseen -painike vie kursorin suoraan oikeaan kohtaan syötteessä.

Yleisimmät virheet, joita liitetyissä dokumenteissa näemme:

SyöteOngelmaOikea JSON
{'name': 'Ada'}yksinkertaiset lainausmerkit{"name": "Ada"}
{name: "Ada"}avain ilman lainausmerkkejä{"name": "Ada"}
[1, 2, 3,]ylimääräinen pilkku lopussa[1, 2, 3]
{"a": 1 "b": 2}puuttuva pilkku{"a": 1, "b": 2}
{"ok": True}Python-literaali{"ok": true}
{"x": 007}etunolla{"x": 7} tai {"x": "007"}
// commentkommenttiei sallittu JSON:issa

Korjaa puolestani -painike korjaa kaikki nämä paitsi puuttuvan pilkun ja etunollan. Korjaus on tarkoituksella varovainen: se ei koskaan arvaa, mihin puuttuva pilkku kuuluu, koska väärään kohtaan lisätty pilkku muuttaa datan merkitystä, ja 007 voi tarkoittaa lukua 7 tai koodia. Näissä tapauksissa saat sen sijaan tarkan sijainnin.

Suuret luvut, avainten järjestys ja muut asiat, jotka tavallinen JSON formatter rikkoo

Monet formatterit toimivat kutsumalla ensin JSON.parse ja sitten JSON.stringify. Tämä edestakainen muunnos vahingoittaa dataa huomaamatta. Twitter- tai Snowflake-tunniste, kuten 1234567890123456789, ylittää JavaScriptin lukujen 2^53-rajan ja palaa muodossa 1234567890123456800. Arvosta 1.0 tulee 1 ja arvosta 1e3 tulee 1000. Tämä formatter ei koskaan muunna lukuja liukuluvuiksi. Se kopioi jokaisen literaalin täsmälleen sellaisena kuin se on kirjoitettu, joten tulos on syötteen uskollinen uudelleenmuotoilu eikä sen uudelleentulkinta. Sama koskee merkkijonojen escape-sekvenssejä: "\u00e9" pysyy muodossa "\u00e9" eikä muutu muotoon "é".

Myös avainten järjestys säilyy. JSON-määrittelyn mukaan objektin jäsenet ovat järjestämättömiä, mutta konfiguraatiotiedostoja, testiaineistoja ja koodikatselmointeja on paljon helpompi lukea, kun järjestys pysyy samana. Jos haluat kanonisen muodon esimerkiksi vertaillaksesi kahta API-vastausta diff-työkalussa, ota Järjestä avaimet käyttöön, niin kummankin dokumentin ominaisuudet listataan aakkosjärjestyksessä jokaisella sisäkkäisellä tasolla.

JSON:in muotoilu vai tiivistys (minify): milloin kumpaakin käytetään

Muotoiltu JSON on ihmisiä varten. Käytä sitä, kun tarkastelet API-vastausta, kirjoitat tiedostoa kuten package.json tai tsconfig.json tai OpenAPI-dokumenttia, tai kun tallennat testiaineistoja repositorioon, jossa diffien pitäisi näyttää yksi muutos riviä kohden. Kaksi välilyöntiä on JavaScript-maailman käytäntö, neljä välilyöntiä on yleinen Python- ja .NET-projekteissa, ja sarkaimilla jokainen lukija voi valita sisennyksen leveyden itse.

Tiivistetty JSON on koneita varten. Välilyöntien ja rivinvaihtojen osuus muotoillusta dokumentista on tyypillisesti 20 ja 40 prosentin välillä, joten niiden poistaminen pienentää selaimille lähetettäviä vastauksia, Redisiin tai tietokannan sarakkeeseen tallennettuja arvoja sekä HTML:ään upotettuja data-*-attribuutteja. Gzip kuroo osan erosta umpeen, mutta tiivistetty versio pakkautuu silti pienemmäksi. Tuloksen alla oleva kokolukema näyttää tarkan eron juuri sinun dokumentillesi.

JSON:in käsittely terminaalissa ja editoreissa

Toistuvasti käsiteltäville tiedostoille komentorivityökalu on nopeampi kuin mikään verkkosivusto. jq . file.json muotoilee, jq -c . file.json tiivistää ja python -m json.tool file.json toimii kaikkialla, missä Python on asennettuna. Visual Studio Code muotoilee JSON:in pikanäppäimellä Shift+Alt+F ja validoi sen skeemaa vasten, kun lisäät $schema-ominaisuuden. Tämä sivu on muita tilanteita varten: selaimen Network-välilehdeltä kopioitu vastaus, lokirivi, wikistä otettu konfiguraation pätkä tai nopea tarkistus koneella, jolle et voi asentaa mitään.

Muita tämän sivuston työkaluja: Base64-kooderi ja -dekooderi purkaa JWT:n tietoja sisältävän osan (payload), joka on Base64url-koodattua JSON:ia. UNIX-aikaleiman muunnin muuttaa useimmissa API-vastauksissa esiintyvät createdAt-luvut luettaviksi päivämääriksi, ja UUID-dekooderi kertoo datasi tunnisteiden version ja aikaleiman. Lisää apuvälineitä löydät kehittäjien työkaluista.

Usein kysytyt kysymykset

Lähetetäänkö JSON-dataani palvelimelle? Ei. Jäsennys, muotoilu ja korjaus tapahtuvat kokonaan selaimessasi JavaScriptillä. Kun sivu on latautunut, voit katkaista verkkoyhteyden ja työkalu toimii edelleen. Mitään ei kirjata lokiin eikä tallenneta.
Miksi validaattori hylkää kommentit, vaikka editorini hyväksyy ne? JSON:in kehittäjä Douglas Crockford poisti kommentit formaatista tarkoituksella, jotta niitä ei käytettäisi jäsentimen ohjauskäskyihin. Tiedostot kuten tsconfig.json tai .vscode/settings.json ovat teknisesti JSONC:tä, JSON:in laajennusta, jota editorit tukevat. API:en, tietokantojen ja useimpien ohjelmointikielten tiukat jäsentimet hylkäävät ne. Korjauspainike poistaa kommentit, joten tulos on kelvollinen kaikkialla.
Voinko muotoilla JSON Lines -dataa tai useita objekteja kerralla? JSON-dokumentti sisältää täsmälleen yhden arvon. Jos liität useita pilkuilla tai rivinvaihdoilla erotettuja objekteja, validaattori pysähtyy ensimmäiseen ylimääräiseen arvoon. Kääri ne hakasulkeisiin, jolloin niistä tulee taulukko, ja muotoile sitten. Korjauspainike ei tee tätä automaattisesti, koska se ei voi tietää, oliko syötteen tarkoitus olla yksi dokumentti.
Mikä on suurin sallittu koko? Kiinteää rajaa ei ole. Muutaman megatavun dokumentit muotoillaan kannettavalla tietokoneella selvästi alle sekunnissa. Syntaksin korostus kytketään pois noin 400 kB:n yläpuolella, jotta sivu pysyy nopeana, mutta kopiointi ja lataus toimivat edelleen.
Muuttaako avainten järjestäminen dataa? Ei. JSON:in objektit ovat määritelmän mukaan järjestämättömiä, katso Wikipedian JSON-artikkeli, joten jäsennin lukee järjestetyn ja alkuperäisen dokumentin samaksi arvoksi. Taulukoiden järjestystä ei koskaan muuteta, koska järjestys on osa dataa.
Miten JSON upotetaan merkkijonon sisään? Tiivistä JSON ensin ja lisää sitten jokaisen kenoviivan ja lainausmerkin eteen kenoviiva. Monissa kielissä tähän on valmis keino: JavaScriptissä JSON.stringify(JSON.stringify(obj)) tai Pythonissa json.dumps(json.dumps(obj)) tuottaa JSON-merkkijonon, joka sisältää JSON-tekstin.

Arvostaisin, jos voisit jakaa nämä sivut ystävien kanssa, tallentaa ne kirjanmerkkeihin tai linkittää niihin. Kiitos! 🙏