
JSON: vormindamine, valideerimine ja katkise parandamine
Kleebi API vastus, konfiguratsioon või logifragment — saad loetava vaate, puu ja loendi kõigest, mis standardile ei vasta, koos täpse rea ja positsiooniga. Kõike loetakse sinu brauseris: andmeid ei saadeta kuhugi ega salvestata kusagil.
.json — fail loetakse lokaalselt. Kleepida võib ka seda, mis pole veel kehtiv JSON: logi, kommentaaridega API vastus, lõpukomadega fragment.
Võtmed ja järjekord on säilinud, arvude kirjapilti pole muudetud.
Kleebi JSON ülal ja vajuta «Töötle».
Kleebi JSON ülal ja vajuta «Töötle».
Andmed ei lahku sinu brauserist — sõelumine ja vormindamine toimuvad lokaalselt, midagi serverisse ei saadeta.
Standardi neli redaktsiooni ja mille poolest need erinevad
JSON-i kirjeldab mitu dokumenti ja need pole identsed. Spetsifikatsiooni valik muudab seda, mida tööriist veaks peab. RFC 4627 (2006) — algne. Ülemise taseme dokument saab olla ainult objekt või massiiv; üksik arv või string pole lubatud. Just sellele redaktsioonile toetuvad mõned vanad teegid siiani. RFC 7159 (2014) — lubas ülemisel tasemel mis tahes väärtuse. Sellest ajast on 42 ja «tekst» iseseisvad JSON-dokumendid. RFC 8259 (2017) — kehtiv. Lisas UTF-8 nõude süsteemidevaheliseks vahetuseks ja sätestas, et ühe objekti nimed peavad olema unikaalsed. ECMA-404 — kirjeldab ainult süntaksit. Korduvaid võtmeid see ei keela ega maini paarituid surrogaate, seega on hoiatuste hulk siin kõige lühem. Kui kahtled — jäta RFC 8259: see on kehtivatest reeglistikest rangeim ja mis selle läbib, võetakse kõikjal vastu.
Miks oma sõeluja, mitte brauseri JSON.parse
Sisseehitatud sõeluja on tehtud kiiruse, mitte diagnostika jaoks. Samade andmete peal vaikib see seal, kus tööriist peaks rääkima: Teade ilma koordinaatideta. Brauser ütleb «Unexpected token» ja nihke märkides; siin saad rea, positsiooni ja selle, mida täpselt oodati. Üks viga terve dokumendi kohta. Pärast esimest tõrget taastub sõelumine ja näitab ülejäänuid, selle asemel et sundida sind ükshaaval parandama. Korduvad võtmed lähevad vaikselt läbi. JSON.parse jätab alles viimase väärtuse ja kadu märgatakse alles toodangus. Arvude kirjapilt läheb kaotsi. 1.0 muutub 1-ks ja üle üheksa kvadriljoni täisarv muudab viimaseid numbreid — täpselt nii lähevad andmebaasist tulnud identifikaatorid katki. Võtmete järjekord väljundis jääb selliseks nagu lähtekoodis, kuni sa ise sortimist ei palu. Arvud väljastatakse siin vaikimisi täpselt nii, nagu need olid kirjutatud: tööriist näitab dokumenti, mitte selle tõlgendamise tulemust.
Mida parandusrežiim täpselt korda teeb
Päris andmed on harva puhas JSON. Parandusrežiim viib standardile vastavaks selle, mis tuleb konfiguratsioonidest, logidest ja võõrastest API-dest: kommentaarid // ja /* */ eemaldatakse; komad sulgeva sulu ees võetakse ära; ühekordsed ja jutumärgid viiakse kahekordseteks; jutumärkideta ja arvulised võtmed võetakse jutumärkidesse; True, NULL, None, undefined muutuvad true, false, null-iks; NaN ja Infinity muutuvad null-iks, sest JSON-is pole lõpliku väärtuseta arve; arvude kirjapilt — liigne pluss, punkt serval, nullid alguses; stringide sees olevad juhtmärgid saavad paojada; faili alguses olev BOM ja JSONP-ümbris eemaldatakse. Ühtki parandust ei tehta vaikselt: iga üks satub loendisse koos juhtude arvuga. Kui tulemus sulle ei sobi — lülita märkeruut välja ja dokumenti kontrollitakse sellisena, nagu ta on.
