JSON Format: Primer in opis: SYL.ru

JSON je okrajšava za Java Script Object Notation, ki je oblika, ki za branje podatkov, ki je sestavljena iz parov vrednosti atributov, uporablja besedilo, ki ga bere človek. To je najpogostejši format podatkov, ki se uporablja za asinhrono komunikacijo med brskalnikom in strežnikom, ki v veliki meri nadomešča XML (AJAX).

JSON je jezikovno neodvisen format podatkov, ki je bil pridobljen iz javascripta. Od leta 2017 številni programski jeziki uporabljajo kodo za ustvarjanje in analiziranje podatkov samo v njej. Imena datotek JSON uporabljajo razširitev .json.

Zgodovina ustvarjanja

Format JSON je sprva razvil Douglasa Crockforda na začetku ničle, v prihodnosti pa sta ga leta 2013 opredelila dva konkurenčna standarda (RFC 7159 in ECMA-404). Standard ECMA opisuje samo veljavno skladnjo, medtem ko RFC zajema nekatere osnove varnosti in interoperabilnosti. Poleg tega obstaja standard RFC 7493, ki opredeljuje omejen profil, znan kot I-JSON (bližnjica iz "Internet JSON"). Prizadeva si premagati nekatere interakcije. Vsak tak dokument je veljaven dokument JSON. Potreba po ustvarjanju te oblike je izrasla iz potrebe po resničnem komunikacijskem protokolu med strežnikom in brskalnikom, ki se izvaja v realnem času brez uporabe vtičnikov (kot so Flash ali Java programčki).

Razvoj in uporaba

Kot je bilo že omenjeno, je Douglas Crockford kot ustvarjalec programske opreme StateSoftware najprej opredelil in populariziral format JSON. Nato so se soustanovitelji strinjali, da bodo ustvarili sistem, ki bo uporabljal standardne zmogljivosti brskalnika,in zagotovil abstrakcijo raven za razvijalce, da ustvarite aplikacije z neprekinjeno duplex povezljivost s spletnim strežnikom. V tem primeru sta bili dve HTTP povezavi odprti in ju obdelali do standardnega časa brskalnika, če ni bilo izmenjanih podatkov. Soustanovitelji so opravili okroglo mizo in glasovali za imenovanje podatkovnega formata JSML ali JSON ter določili vrsto licence, za katero bo nova oblika na voljo. Oblika je trenutno odprta.

Praktična uporaba

Spletna stran JSON.org se je začela leta 2002. Decembra 2005 Yahoo! začel ponujati nekatere svoje spletne storitve v tej obliki. Google je začel uporabljati kanale JSON za svoj spletni protokol GData šele decembra 2006. Prvotno je bila oblika datoteke JSON namenjena za podskupino jezika skripta javascript (zlasti Standard ECMA-262 3. izdaja-december) in se je pogosto uporabljala z njim. Vendar pa ni odvisen od podatkov v formatu jezika. Koda za razčlenjevanje in generiranje podatkov JSON je na voljo v številnih programskih jezikih. Na spletnem mestu JSON so navedene vse knjižnice. Kljub dejstvu, da je bil spletni JSON format prvotno oglaševan in je veljal za strogo podskupino javascripta in ECMAScripta, občasno dovoljuje, da se nekateri znaki ne skenirajo v vrsticah, ki niso dopustne v nizih javascript in ECMAScript.

JSON je postal mednarodni standard ECMA leta 2013 kot standard ECMA-404, ki je bil uporabljen v istem letu kot referenčni RFC 7158. V letu 2014 je RFC 7159 postal glavni sklic na uporabo JSON na internetu (npr. MIME/json).

Vrste podatkov, skladnja in primer

Glavne vrste podatkov JSON so:
  • Število: decimalno število z znakom, ki lahko vsebuje delni del in lahko uporablja eksponent E, vendar ne sme vključevati številk (npr. NaN). Oblika ne razlikuje med cilji in števili s plavajočo vejico. javascript uporablja dvojno obliko s plavajočo vejico za vse številske vrednosti, vendar jih lahko drugi jeziki, ki jih izvaja JSON, različno kodirajo.
  • Linija: Zaporedje znakov Unicode ali nič. Vrstice so ločene z dvojnimi črkami in podpirajo sintakso s poševnico.
  • Literali: katera koli vrednost je resnična ali neresnična.
  • Array: urejen seznam z nič ali več vrednostmi, od katerih je lahko vsak. Polja uporabljajo kvadratne oklepaje z vejicami.
  • Objekt: neurejen niz parov imena /vrednosti, kjer so imena (imenovana tudi ključi) vrstice. Ker so objekti namenjeni predstavljanju asociativnih nizov, je priporočljivo (čeprav ne nujno), da je vsak ključ edinstven znotraj njega. Predmeti so razdeljeni s kodrastimi oklepaji in z vejicami delijo vsak par, v vsakem od njih pa dvopičje očisti ključ ali ime od njegove vrednosti.
  • Null: vrednost prazna, z uporabo besede null.
  • Omejeni prostori so dovoljeni in jih je mogoče prikazati okrog ali med skladenjskimi elementi (pomen in ločila, vendar ne znotraj vrednosti niza). V ta namen samo štiri posebne znakeštejejo za presledke: presledek, vodoravni zavihek, prevod vrstice in poševno. Natančneje, oznaka bajtnega reda ne sme biti ustvarjena z ustrezno izvedbo (čeprav jo lahko razčleni JSON). Poizvedba JSON ne daje sintakse za komentarje. Zgodnje različice (kot so tiste, določene v RFC 4627) so zahtevale, da je veljaven dokument sestavljen samo iz predmeta ali vrste matrike, ki lahko vsebuje druge vrste znotraj njih. Format JSON, katerega primer je mogoče najti na zastarelih spletnih straneh, je trenutno neuporabljen.

    Težave pri prenosu podatkov

    Kljub dejstvu, da je Douglas Crackford prvič trdil, da je JSON stroga podskupina javascripta, lahko njena specifikacija dejansko omogoča izdelavo dokumentov, ki se berejo v javascript. Zlasti JSON dovoljuje, da so vrednosti linij Unicode U + 2028 LINE SEPARATOR in U + 2029 PARAGRAPH SEPARATOR nezaščitene v nizih, ki jih navaja, in javascript ne. To je posledica dejstva, da JSON prepoveduje samo "kontrolne znake". Za največjo združljivost morajo biti ti znaki pregledani z obratno poševnico. Ta subtilnost je pomembna pri ustvarjanju JSONP.

    Format JSON: kaj odpreti?

    JSON dokumenti so lahko kodirani v UTF-8 UTF-16 ali UTF-32 privzeto kodiranje - UTF-8. Ti standardi podpirajo celoten nabor znakov Unicode, vključno z znaki izven glavne večjezične ravnine (od U ​​+ 10000 do U + 10FFFF). Analizatorji formata JSON, kaj odpreti in kako boste prebrali to datoteko? Številke v tej obliki so agnostik glede njihove predstavitve v programskih jezikih. Med celim in plavajočo vejico ni razlike: nekatere izvedbe lahko obravnavajo 42420 in 4.2 E + 1 kot isto številko, medtem ko druge ne. Poleg tega ni nobenih zahtev za vprašanja, kot so prelivanje, nezadostnost, izguba natančnosti ali zaokroževanje. Poleg tega JSON format nima ničesar povedati o obdelavi podpisanih ničel, ne glede na to, ali je 0,0 ali drugačen od -0,0. Večina izvedb, ki uporabljajo standard IEEE 754 s plavajočo vejico, vključno z javascriptom, obdrži ničle, vendar pa ne morejo vse implementacije JSON.

    Uporaba javascripta

    Ker je JSON format izpeljan iz javascripta in njegova sintaksa (v bistvu) je podmnožica jezika, se lahko javascripteval uporablja za analizo podatkov JSON. Zaradi težav z razčlenitvijo nizov unicode, obravnavanih v prejšnjem razdelku, mora funkcija eval izvesti zamenjavo. To je nevarno, če niz ni pravilno preverjen. Namesto tega morate za branje in pisanje JSON uporabiti knjižnico razčlenjevanja JSON ali podporo za javascript. Pravilno izveden razčlenjevalnik sprejema samo veljavni format JSON, ki je opisan v sistemu in preprečuje nenamerno izvajanje potencialno škodljive kode. Od leta 2010 imajo takšni brskalniki podporo za Firefox in Internet Explorer za analizo in razkladanje v formatu JSON.

    Nepodprti lastni podatkovni tipi

    Skladnja javascript opredeljuje več lastnih podatkovnih tipov, ki niso vključeni vStandard JSON: zemljevid, namestitev, datum, napaka, regularni izraz, funkcija in nekatere druge. Te tipe podatkov javascript morajo predstavljati nekatere druge oblike, pri čemer se oba programa dogovorita o načinu pretvorbe med vrstami. Danes obstajajo nekateri defacto standardi, na primer pretvarjanje datuma v niz, vendar nobeden od njih ni splošno sprejet. Drugi jeziki imajo lahko drugačen nabor lastnih tipov, ki jih je treba skrbno serijsko razčlenjevati za obravnavo tega tipa konverzije.

    JSON shema

    Shema se uporablja za določanje strukture podatkov JSON za preverjanje, dokumentiranje in upravljanje interakcij. Zagotavlja vrsto pogodbe za podatke, ki jih zahteva aplikacija, in način, kako je spremenjena. Shema temelji na konceptih iz sheme XML (XSD), vendar je sama po sebi. Enako kot pri XSD se za shemo in podatke uporabljajo ista orodja za seriorizacijo in deserializacijo. Shema je spletni projekt, ki je trenutno v različici 5 (izdan 13. oktobra 2016). Na voljo je več validatorjev za različne programske jezike, od katerih ima vsaka različno raven skladnosti. Ni standardnih razširitev datotek, vendar nekateri strokovnjaki predlagajo odobritev .schema.json.

    Tip MIME

    Uradni tip MIME za besedilo JSON je "application /json". Kljub dejstvu, da je večina sodobnih izvedb sprejela uradni tip MIME, številne aplikacije še naprej zagotavljajo podedovano podporo za druge vrste MIME. Številni ponudniki storitev, brskalniki, strežniki, spletne aplikacije, knjižnice, ogrodja in API-ji uporabljajo, čakajo ali prepoznajo vrsto MIME, katere vsebina izgleda"Besedilo /json" ali "besedilo /javascript". Znani primeri vključujejo Google Search API, Yahoo !, Flickr, Facebook API, DojoToolkit 0.4 in tako naprej.

    JSON-RPC

    JSON-RPC je protokol za oddaljeni klic postopkov (RPC), ki je zgrajen na JSON in je zamenjava za XML-RPC ali SOAP. To je preprost protokol, ki definira le nekaj vrst podatkov in ukazov. Sistemu omogoča pošiljanje sporočil (informacije strežniku, ki ne potrebujejo odgovora) in več klicev na strežnik, na katere se lahko odgovori brez reda.

    AJAJ

    Asinhroni javascript in JSON (ali AJAJ) se nanašata na enako dinamično spletno metodologijo kot Ajax, toda namesto XML je ključna natančna oblika podatkov JSON. AJAJ je spletna razvojna tehnologija, ki omogoča, da spletna stran po prenosu v brskalnik zahteva nove podatke. Ponavadi jih prikaže iz strežnika kot odziv na uporabniška dejanja na tej strani. Na primer, kaj uporabnik vnese v iskalno polje, koda odjemalca nato pošlje strežniku, ki se takoj ujema s spustnim seznamom ustreznih elementov baze podatkov.

    Varnostna vprašanja

    Besedilo v obliki JSON je opredeljeno kot predmet serijalizacije podatkov. Vendar pa njegova zasnova, kot nespametna podskupina jezika JavaScript script, ustvarja več varnostnih težav. Osredotočajo se na uporabo interpretatorja Javascript za dinamično izvajanje besedila JSON kot vgrajen javascript. To predloži program napačne ali zlonamerne skripte. To je resen problem pri delu s podatki, pridobljenimi iz interneta. Ta preprosta in priljubljena, vendar tvegana metoda uporablja združljivost funkcijjavascripteval Nekateri razvijalci napačno verjamejo, da je tudi besedilo JSON skladenjsko podobno javascriptu, čeprav je to le delno res. Zato se verjame, da je za program javascript, ki analizira podatke v formatu, lahko uporabiti vgrajeno funkcijo javascripteval, ki je bila razvita za vrednotenje izrazov "javascript". Interpreter se torej ne uporablja poseben razčlenjevalnik, zato se uporablja za izvajanje podatkov JSON z ustvarjanjem naravnih predmetov javascript. Vendar pa je ta metoda tvegano, če je verjetno, da bodo podatki JSON vsebovali poljubno kodo Javascript, ki bo nato izvedena na enak način. Če se za preverjanje podatkov ne izvedejo nobeni ukrepi, je metoda eval nagnjena k varnostnim ranljivostim, kadar podatki in celotno okolje javascript niso pod nadzorom enega zaupanja vrednega vira. Če na primer podatki niso preverjeni, jih napadli zlonamerna koda javascript. Takšne kršitve lahko predstavljajo tudi tveganje kraje podatkov, lažnega preverjanja pristnosti in drugih možnih zlorab podatkov in virov. Tako je bila nova funkcija JSON.parse razvita kot varnejša alternativa eval. Izdelan je posebej za obdelavo podatkov in sicer JSON, ne javascript. Sprva naj bi bila vključena v četrto izdajo standarda ECMAScript, vendar se to ni zgodilo. Najprej je bila dodana peti različici in jo zdaj podpirajo glavni brskalniki.

    Sorodne publikacije