JSON-vormingus

JSON-vormingus

JSON-vormingus

JSON Tegemist on tekstipõhise andmevahetusvorminguga, mis tähendab, et seda on lihtne lugeda nii inimesele kui ka programmile. Selle nimi vastab ingliskeelsele akronüümile Java Objekti märgistus ja on standardiseeritud kui ECMA-404. Kuigi see on süntaksilt väga lähedane formaat JavaScript, kuna seda on väga lihtne töödelda objektiandmete kodeerimiseks või hankimiseks, kasutatakse seda ka paljudes teistes programmeerimiskeeltes (C, C + +, Java, Python...) alternatiivina näiteks XML-ile, millel on sarnane eesmärk, kuid kuna see sisaldab rohkem metateavet, nõuab rohkem teksti ja võtab seetõttu rohkem ruumi, tarbib rohkem ribalaiust ja nõuab rohkem ressursse kodeerimiseks ja dekodeerimiseks. selles sisalduvat teavet. JSON.

Sisukord

    Sisse kodeeritud objekti andmed JSON Need on suletud sulgudes, nende sees olevad erinevad omadused eraldatakse komadega ja atribuutide nimed eelnevad väärtusele, millest eraldatakse kooloniga.

    Objekti süntaksi ülevaade JSON-vormingus

    Omaduste nimed tuleb lisada jutumärkidesse topeltjutumärkidega (kuigi mõned analüüsijad toetavad ka üksikjutumärke) ja kuigi mõned erimärgid on nimede jaoks lubatud (nt rõhumärgid), ei ole soovitatav vältida mõne analüüsimootori kriteeriume ja vältige konflikte atribuudi kasutamisel, eriti punkt(object.property) süntaksiga

    Ülaltoodud näites näete objekti, millel on kuus atribuuti lihtsate, numbriliste, tõeväärtuste või tekstiväärtustega; aga formaadis JSON, võivad omadused omandada väärtusena ka objekti (sh "eriobjekti" null) või massiivi lisaks tekstistringile (tekst jutumärkides), numbrile (erinevates vormingutes) või tõeväärtuse (tõene või väär ).

    Nagu keelegagi JavaScript (JSON on alamhulk JavaScript) maatriksi väljendamiseks on selle väärtused nurksulgudes ja eraldatud komadega. Lihtsaim juhtum on illustreeritud allolevas näites; See on ühemõõtmeline massiiv, vektor, mis koosneb arvväärtustest.

    En JavaScript Kõik massiivi elemendid ei pea olema sama tüüpi, segada võib näiteks tekstistringe ja arvväärtusi. Vektor, ühemõõtmeline massiiv, võib olla ka teise massiivi üheks elemendiks, võimaldades konstrueerida muutuva pikkusega mitmemõõtmelisi massiive. Järgmises näites on näidatud kolme omadusega objekt: esimene on fikseeritud pikkustega kahemõõtmeline massiiv, teine ​​muutuva pikkusega massiiv ja kolmas, mis on moodustatud erinevat tüüpi väärtustega massiivist.

    Järgmises näites kasutatakse põhiobjekti atribuutide väärtustena muid objekte. Pesastamistasemel pole piiranguid, seega võivad vanema varaväärtusteks olevate objektide varaväärtusteks olla ka muud objektid ja nii edasi.

    Nii nagu see juhtub JavaScript, kasutatakse paokoode teatud märkide lisamiseks tekstistringi. Kõige üldisem viis on kasutada paoklahviga väljendatud unicode-koode, u-tähte ja nelja kuueteistkümnendkoha numbrit vorminguga "\u263A" et viidata näiteks ☺.

    Enamikus keeltes (sarnaselt C-ga) esinevad standardmärgid on järgmised

    • Recoil \b Kood ASCII 8 (0 x 08)
    • Tabulaator \t Kood ASCII 9 (0x09) Tavaliselt kujutatakse seda HT-na (horisontaalne tabelaator)
    • Uus rida \n Kood ASCII 10 (0x0A) Tavaliselt kujutatakse seda kui LF (reavahetus)
    • Uus leht \f Kood ASCII 12 (0x0C) Tavaliselt on FF (vormivoog)
    • Tagasi \r Kood ASCII 13 (0x0D) Seda tähistatakse tavaliselt kui CR (carriage return)
    • Jutumärgid \" Kood ASCII 34 (0 x 22)
    • poolitatud riba \/ Kood ASCII 57 (0x2F)
    • Kaldkriips \\ Kood ASCII 134 (0x5C)
    • unicode kood \uXXXX

    Pärit C (ja sellega seotud Unix jms, nagu GNU / Linux) rea lõppu tähistatakse tavaliselt tähega \n ja see on see, mis tuleb sisse valida JSON kuid huvitav on meeles pidada, et mõned operatsioonisüsteemid eelistavad muid alternatiive. Windows tähistab tavaliselt koos \r\n realõpud ja Mac OS (enne OS \r

    Arvvormingu osas on ka viide JavaScript. Kümnenderaldaja on punkt, sidekriips (ASCII 45 0x2D) kasutatakse negatiivse märgina ja tähistus eksponentsiaalsel kujul (Teaduslik märge) kasutab E indikaatorina (mis võib olla suur- või väiketäht)

    Nagu alguses ütlesin, on tekstina hangitud andmete kasutamiseks erinevatel programmeerimiskeeltel analüüsi- ja määramisfunktsioonid. Järgmine näide näitab, kuidas neid kasutatakse JavaScript. Selle konsoolist kasutamiseks on andmete määramine kaasatud JSON Vältimaks võimalikke vigu sõltuvalt tõlgi kasutatavast ECMA standardist JavaScript objekti määramine on tehtud JSON ühes reas. 6. aasta 2016. väljaanne (ECMA-262) toetab mitmerealisi stringe, väljaanne 5 (kuni 2011) peab lisama paokoodi \ ja eelmistes tuleb see käsitsi lahendada või kasutada ühte rida.

    Hoiatus, et ärge ajage uusi kasutajaid segadusse JavaScript. Koodi sees JavaScript Objekti loomiseks ei ole vaja kasutada tekstistringi, eelmises näites kasutatakse seda näiteks serverist saabuvate andmete simuleerimiseks. Objekti määramiseks muutujale, näiteks:

    Selle objekti saab funktsiooni abil näiteks tekstiks teisendada stringify järgnevalt:

    Vorming JSON See on üsna paindlik, kuid peamiselt seetõttu, et see on inimesele loetav tekstipõhine, on sellel mõned puudused. Esimene on see, et see nõuab rohkem mälu ja tarbib rohkem ribalaiust, kui on hädavajalik. Eelmistes näidetes on kasutatud vormingut, mille eesmärk on olla loetavam kui ökonoomne, seega ei ole need säästunäideteks, kuigi on palju vormingu elemente (sulud, sulud, jutumärgid...), mis jätkuksid tarbida ressursse võrreldes esitatava teabega.toores.

    Teine probleem tekib puhtalt binaarsete andmete (näiteks piltide) käsitlemisel.Väikeste portsjonite käsitlemisel saab selle lahendada erimärkide vormindamise lahendamiseks selgitatuga, kuid kui tegemist on teatud mõõtmetega teabe kodeerimisega, see tuleb manustada vormingusse JSON kasutades teist tekstivormingut. Selle aspekti lahendamiseks enim kasutatud kodeering on Alus64 kuna paljudes keeltes on raamatukogud teabe teisendamiseks ühes või teises suunas. Kui manipuleeritavad andmed on valdavalt seda tüüpi ja/või inimesel pole vaja infot ilma programmita tõlgendada, tasub mõelda, kas vorming JSON on kõige sobivam.

    Postita kommentaar

    Võib-olla jäite vahele