Programiranje

Kaj je JSON? Boljši format za izmenjavo podatkov

JavaScript Object Notation je strukturirani podatki, ki temeljijo na parih ključ / vrednost in urejenih seznamih, brez sheme, na besedilu. Čeprav JSON izhaja iz JavaScripta, je podprt bodisi izvirno bodisi prek knjižnic v večini glavnih programskih jezikov. JSON se pogosto, vendar ne izključno, uporablja za izmenjavo informacij med spletnimi odjemalci in spletnimi strežniki.

V zadnjih 15 letih je JSON postal vseprisoten v spletu. Danes je ta oblika zapisa izbrana za skoraj vse javno dostopne spletne storitve, pogosto pa se uporablja tudi za zasebne spletne storitve.

Priljubljenost JSON je povzročila tudi izvorno podporo za JSON v mnogih zbirkah podatkov. Relacijske zbirke podatkov, kot sta PostgreSQL in MySQL, imajo zdaj vgrajeno podporo za shranjevanje in poizvedovanje po podatkih JSON. Podatkovne baze NoSQL, kot sta MongoDB in Neo4j, prav tako podpirajo JSON, čeprav MongoDB v ozadju uporablja nekoliko spremenjeno binarno različico JSON.

V tem članku si bomo na hitro ogledali JSON in razpravljali o tem, od kod je prišel, njegove prednosti pred XML, njegove pomanjkljivosti, kdaj ga morate uporabiti in kdaj razmisliti o drugih možnostih. Najprej pa se potopimo v drobne pesmi tega, kako JSON izgleda v praksi.

Primer JSON

Tu je primer podatkov, kodiranih v JSON:

{

“FirstName”: “Jonathan”,

"LastName": "Freeman",

“LoginCount”: 4,

“IsWriter”: res,

“WorksWith”: [“Spantree Technology Group”, “”],

"Hišni ljubljenčki": [

    {

“Name”: “Lilly”,

“Type”: “Raccoon”

    }

  ]

}

Zgornja struktura jasno določa nekatere lastnosti osebe. Vključuje ime in priimek, kolikokrat se je oseba prijavila, ali je ta oseba pisateljica, seznam podjetij, s katerimi oseba sodeluje, in seznam hišnih ljubljenčkov (v tem primeru samo enega). Struktura, kot je zgornja, se lahko prenese iz strežnika v spletni brskalnik ali mobilno aplikacijo, ki bo nato izvedla nekaj dejanj, na primer prikaz podatkov ali shranjevanje za poznejšo uporabo.

JSON je generična oblika zapisa podatkov z minimalnim številom vrst vrednosti: nizi, števila, logične vrednosti, seznami, predmeti in nič. Čeprav je zapis podnabor JavaScript, so te vrste zastopane v vseh običajnih programskih jezikih, zato je JSON dober kandidat za prenos podatkov skozi jezikovne vrzeli.

Datoteke JSON

Podatki JSON so shranjeni v datotekah, ki se končajo s pripono .json. V skladu z razumljivim etosom JSON-a so to preprosto navadne besedilne datoteke, ki jih je mogoče enostavno odpreti in pregledati. Kot pojasnjuje blog SQLizer, je to tudi ključ do širše interoperabilnosti JSON-a, saj lahko skoraj vsak jezik, ki ga imenujete, bere in obdeluje navadne besedilne datoteke in jih je enostavno poslati prek interneta.

Zakaj naj uporabljam JSON?

Da bi razumeli koristnost in pomembnost JSON-a, bomo morali nekaj razumeti o zgodovini interaktivnosti v spletu.

V zgodnjih 2000-ih se je interaktivnost v spletu začela spreminjati. Takrat je brskalnik služil predvsem kot neumen odjemalec za prikaz informacij, strežnik pa je ves naporen del pripravljal vsebino za prikaz. Ko uporabnik v brskalniku klikne na povezavo ali gumb, se strežniku pošlje zahteva, strežnik pripravi podatke, potrebne kot HTML, in brskalnik HTML prikaže kot novo stran. Ta vzorec je bil počasen in neučinkovit, zato je moral brskalnik znova upodabljati vse na strani, tudi če se je spremenil le del strani.

Ker je bilo polnjenje celotne strani drago, so spletni razvijalci iskali novejše tehnologije za izboljšanje splošne uporabniške izkušnje. Medtem se je zmožnost pošiljanja spletnih zahtev v ozadju med prikazom strani, ki je bila pred kratkim predstavljena v Internet Explorerju 5, izkazala za izvedljiv pristop k postopnemu nalaganju podatkov za prikaz. Namesto da bi naložili celotno vsebino strani, bi s klikom gumba za osvežitev sprožili spletno zahtevo, ki bi se naložila v ozadju. Ko je bila vsebina naložena, je bilo s podatki mogoče manipulirati, shraniti in prikazati na strani z uporabo JavaScript, univerzalnega programskega jezika v brskalnikih.

REST vs SOAP: Povezava JSON

Prvotno so bili ti podatki preneseni v obliki XML (za primer glejte spodaj) z uporabo protokola za sporočanje, imenovanega SOAP (Simple Object Access Protocol). Toda XML je bil podroben in ga je bilo težko upravljati v JavaScript. JavaScript je že imel predmete, ki so način izražanja podatkov v jeziku, zato je Douglas Crockford podnabor tega izraza vzel kot specifikacijo za novo obliko izmenjave podatkov in ga poimenoval JSON. JSON je bilo veliko lažje za branje in brskalnike za razčlenitev.

V nekajdesetih letih prejšnjega stoletja je druga tehnologija spletnih storitev, imenovana Represent State Transfer ali REST, začela prehitevati SOAP za prenos podatkov. Ena od velikih prednosti programiranja z API-ji REST je, da lahko uporabite več podatkovnih formatov - ne samo XML, temveč tudi JSON in HTML. Ker so spletni razvijalci dali prednost JSON-u kot XML-u, so tudi oni RAST-u namesto SOAP-a dali prednost. Kot je na blogu Svitla zapisal Kostyantyn Kharchenko, "je uspeh REST-a v mnogih pogledih posledica formata JSON zaradi enostavne uporabe na različnih platformah."

Danes je JSON dejanski standard za izmenjavo podatkov med spletnimi in mobilnimi odjemalci ter zalednimi storitvami.

JSON v primerjavi z XML

Kot smo že omenili, je glavna alternativa JSON XML. Vendar je XML v novih sistemih vse manj pogost in zlahka je videti, zakaj. Spodaj je različica podatkov, ki ste jih videli zgoraj, tokrat v XML:

Jonathan

Freeman

  4

prav

Spantree Technology Group

Lilly

Rakun

Poleg tega, da je bolj podroben (v tem primeru natančno dvakrat bolj podroben), XML vnaša tudi nekaj dvoumnosti pri razčlenjevanju v JavaScript prijazno strukturo podatkov. Pretvorba XML v objekt JavaScript lahko traja od deset do stotine vrstic kode in na koncu zahteva prilagoditev na podlagi razčlenjenega predmeta. Pretvorba JSON v objekt JavaScript traja eno vrstico kode in ne zahteva predhodnega znanja o predmetu, ki se razčleni.

Omejitve JSON

Čeprav je JSON razmeroma jedrnata in prilagodljiva oblika zapisa podatkov, s katero je enostavno delati v mnogih programskih jezikih, ima oblika nekaj pomanjkljivosti. Tu je pet glavnih omejitev:

  1. Brez sheme. Po eni strani to pomeni, da imate popolno prilagodljivost za predstavitev podatkov na kakršen koli način. Po drugi strani pa to pomeni, da bi lahko po naključju zelo enostavno ustvarili napačno oblikovane podatke.
  2. Samo ena vrsta številk: oblika dvojne natančnosti s plavajočo vejico IEEE-754. To je zalogaj, vendar preprosto pomeni, da ne morete izkoristiti raznolikih in niansiranih vrst števil, ki so na voljo v številnih programskih jezikih.
  3. Brez vrste datuma. Ta opustitev pomeni, da se morajo razvijalci zateči k uporabi nizovnih predstavitev datumov, ki vodijo do razhajanj v oblikovanju, ali pa morajo predstavljati datume v obliki milisekund od epohe (1. januarja 1970).
  4. Brez komentarja. To onemogoča zapisovanje polj v vrstici, kar zahteva dodatno dokumentacijo in povečuje verjetnost nerazumevanja.
  5. Podrobnost. Čeprav je JSON manj podroben kot XML, to ni najbolj jedrnata oblika izmenjave podatkov. Za obsežne storitve ali storitve za posebne namene boste želeli uporabiti učinkovitejše oblike zapisa podatkov.

Kdaj naj uporabim JSON?

Če pišete programsko opremo, ki komunicira z brskalnikom ali izvorno mobilno aplikacijo, uporabite JSON kot podatkovno obliko. Uporaba formata, kot je XML, je zastarela izbira in rdeča zastavica za nadarjene in mobilne uporabnike, ki bi jih sicer želeli pritegniti.

V primeru komunikacije med strežniki je morda bolje, če uporabite serializacijski okvir, kot sta Apache Avro ali Apache Thrift. JSON tukaj ni slaba izbira in je morda še vedno tisto, kar potrebujete, vendar odgovor ni tako jasen kot za spletno in mobilno komunikacijo.

Če uporabljate zbirke podatkov NoSQL, ste precej zaljubljeni v vse, kar vam daje baza podatkov. V relacijskih zbirkah podatkov, ki podpirajo JSON kot vrsto, je dobro pravilo, da ga uporabljamo čim manj. Relacijske zbirke podatkov so bile prilagojene strukturiranim podatkom, ki ustrezajo določeni shemi. Medtem ko večina zdaj podpira bolj prilagodljive podatke v obliki JSON, lahko med poizvedovanjem o lastnostih znotraj teh objektov JSON pričakujete uspešnost.

JSON je vseprisotna, dejanska oblika za pošiljanje podatkov med spletnimi strežniki in brskalniki ter mobilnimi aplikacijami. Preprosta zasnova in prilagodljivost omogočata enostavno branje in razumevanje ter v večini primerov enostavno upravljanje v programskem jeziku po vaši izbiri. Pomanjkanje stroge sheme omogoča prilagodljivost formata, vendar ta prožnost včasih otežuje, da pravilno berete in pišete JSON.

Razčlenjevalnik JSON

Del kode aplikacije, ki podatke, shranjene kot JSON, pretvori v obliko, ki jo aplikacija lahko uporablja, se imenuje a razčlenjevalnik. JavaScript, kot bi pričakovali, vključuje izvorni razčlenjevalnik, metodo JSON.parse ().

Morda boste morali malo več delati za delo z JSON-om v močno natipkanih jezikih, kot sta Scala ali Elm, toda razširjeno sprejemanje JSON-a pomeni, da obstajajo knjižnice in pripomočki, ki vam pomagajo pri vseh najtežjih delih.

Spletno mesto json.org vključuje izčrpen seznam knjižnic kod, ki jih lahko uporabite za razčlenjevanje, ustvarjanje in upravljanje JSON-a v jezikih, ki so tako raznoliki kot Python, C # in COBOL.

Pripomočki JSON

Če želite neposredno manipulirati ali preučiti podatke, kodirane z JSON, ne da bi sami napisali kodo, vam lahko pomagajo številni spletni pripomočki. Vsi programski ekvivalenti v knjižnicah kod, povezanih na zgoraj, lahko pa izrežete in prilepite kodo JSON v ta orodja, ki temeljijo na brskalniku, da boste lažje razumeli JSON ali izvedli hitro in umazano analizo:

  • JSON Formatter: JSONLint bo formatiral in potrdil poljubno kodo JSON.
  • Pregledovalnik JSON: Stack.hu ima spletno mesto, ki bo ustvarilo interaktivno drevo, ki vam bo pomagalo razumeti strukturo vaše kode JSON.
  • JSON Beautifier: Če želite svojo kodo JSON "lepo natisniti" s sintaksno barvo in podobno, vam lahko Prettydiff pomaga.
  • Pretvornik JSON: Ali morate podatke iz formata JSON hitro premakniti v kaj drugega? Convertcsv.com ima orodja, ki lahko pretvorijo JSON v CSV (ki ga je nato mogoče odpreti v Excelu) ali XML.

Vadnica JSON

Ste pripravljeni, da se potopite in izveste več o tem, kako v interaktivnih aplikacijah deluje JSON? Mozilla Developer Network ima odlično vadnico, s katero boste začeli uporabljati JSON in JavaScript. Če ste pripravljeni na prehod na druge jezike, si oglejte vadnico o uporabi JSON-a z Javo (iz Baeldunga), s Pythonom (iz DataCampa) ali s C # (iz pomoči za testiranje programske opreme). Vso srečo!

Josh Fruhlinger je prispeval k temu članku.

$config[zx-auto] not found$config[zx-overlay] not found