Format JSON: primer in opis. Format JSON: ustvarjanje podatkov, uporaba s PHP in JS dekodiranje okrajšav Json

) in med samimi strežniki (programski vmesniki HTTP). Format JSON je zelo primeren tudi za shranjevanje zapletenih dinamičnih struktur v relacijskih bazah podatkov ali predpomnilnikih datotek.

Ker je JSON podnabor sintakse JavaScript, ga je mogoče hitro deserializirati z uporabo vgrajene funkcije eval(). Poleg tega je mogoče vstaviti popolnoma delujoče funkcije JavaScript. V PHP, začenši z različico 5.2.0, je podpora za JSON vključena v jedro v obliki funkcij json_decode() in json_encode(), ki sami pretvarjata podatkovne tipe JSON v ustrezne tipe PHP in obratno.

Sintaksa

JSON je zgrajen na dveh strukturah:

  • Nabor parov ključ/vrednost. V različnih jezikih se to izvaja kot predmet, zapis , struktura , slovar , zgoščena tabela , seznam s ključi ali asociativno polje . Ključ je lahko le niz, vrednost je lahko samo poljubna oblika.
  • Oštevilčen nabor vrednosti. V mnogih jezikih se to izvaja kot niz, vektor, seznam ali zaporedje.

To so univerzalne podatkovne strukture. Teoretično jih vsi sodobni programski jeziki podpirajo v takšni ali drugačni obliki. Ker se JSON uporablja za izmenjavo podatkov med različnimi programskimi jeziki, ga je smiselno graditi na teh strukturah.

V JSON se uporabljajo naslednji obrazci:

  • Objekt je neurejen nabor parov ime/vrednost, zaprtih v zavitih oklepajih ( ). Med imenom in vrednostjo je simbol ": " , pari ime/vrednost pa so ločeni z vejicami.
  • Matrika (enodimenzionalna) je niz vrednosti, ki imajo serijske številke (indekse). Matrika je v oglatih oklepajih. Vrednosti so ločene z vejicami.
  • Vrednost je lahko linija v dvojnih narekovajih, število, vrednost prav oz lažno, predmet, niz, ali vrednost nič. Te strukture so lahko ugnezdene druga v drugo.
  • Niz je urejen niz nič ali več znakov Unicode, zaprtih v dvojnih narekovajih, z uporabo ubežnih zaporedij s poševnico nazaj. Znaki so predstavljeni kot preprost niz.
  • Ime je niz.

Linija zelo podoben nizu v jezikih in Javi. številka prav tako zelo podobno številu C ali Java, le da se uporablja samo decimalna oblika. Presledke lahko vstavite med katera koli dva znaka.

Naslednji primer prikazuje JSON predstavitev predmeta, ki opisuje osebo. Objekt ima vrvica polji za ime in priimek, objekt, ki opisuje naslov, in polje, ki vsebuje seznam telefonskih številk.

( "firstName" : "Ivan" , "lastName" : "Ivanov" , "address" : ( "streetAddress" : "Moskovskoe sh., 101, apt. 101" , "city" : "Leningrad" , "postalCode" : 101101 ) , "phoneNumbers" : [ "812 123-1234" , "916 123-4567" ] )

V XML bi takšna struktura izgledala nekako takole:

Ivan Ivanov Moskovskoe sh., 101, stanovanje 101 Leningrad 101101 812 123-1234 916 123-4567

812 123-1234 916 123-4567

Primerjava z YAML

Funkcionalno in sintaktično je JSON podmnožica jezika YAML. Natančneje, specifikacija YAML 1.2 navaja, da je "vsaka datoteka JSON veljavna datoteka YAML." Najpogostejši razčlenjevalnik YAML lahko obdeluje tudi JSON. Specifikacija YAML pred različico 1.2 ni v celoti zajemala JSON, predvsem zaradi pomanjkanja izvorne podpore za UTF-32 v YAML, pa tudi zaradi zahteve po presledku za ločilom z vejico. Poleg tega je specifikacija JSON vključevala komentarje v slogu /* */.

Najpomembnejša razlika v YAML je nabor sintaksnih razširitev, ki nimajo analogov v JSON:

Relacijski: YAML podpira relacijske podatke: v dokumentu YAML se lahko sklicujete na sidro, ki se je pojavilo prej v datoteki/toku. Rekurzivne strukture se lahko izrazijo na ta način. Razširljivost: YAML podpira razširljive vrste podatkov, ki presegajo primitivne (tj. nize, številke, logične vrednosti). Bloki: V YAML je na voljo sintaksa zamaknjenih blokov; omogoča opisovanje strukturiranih podatkov brez uporabe nepotrebnih simbolov (vse vrste oklepajev, narekovajev itd.).

Shema JSON

Shema JSON je eden od jezikov za opis strukture dokumenta JSON. Uporablja sintakso JSON. Temelji na konceptih XML Schema, RelaxNG, Kwalify. Shema JSON je samoopisni jezik: kadar se uporablja, je mogoče uporabiti ista orodja za serializacijo/deserializacijo za obdelavo podatkov in opis njihove veljavnosti.

Uporaba JSON v Ajaxu

Naslednji primer kode Javascript prikazuje, kako lahko brskalnik uporabi XMLHttpRequest, da od strežnika zahteva predmet v obliki JSON (strežniška stran programa je izpuščena; vsebovati mora kodo, ki pošilja podatke kot niz JSON kot odgovor na zahteve url).

Var the_object; var http_request = new XMLHttpRequest() ; http_request.open("GET", url, res); http_request.send(null); http_request.onreadystatechange = function () ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse ( http_request.responseText ) ; ) else ( alert( "Prišlo je do težave z URL." ) ; ) http_request = null ; ) ) ;

Upoštevajte, da ta primer uporabe XMLHttpRequest ni univerzalen za vse brskalnike (za brskalnike, ki temeljijo na Internet Explorerju, Operi, Safariju in Mozilli, bi moralo biti nekaj razlik v kodi). Uporaba XMLHttpRequest je omejena zaradi iste politike izvora: URL odgovora na zahtevo mora biti v isti domeni DNS kot strežnik, na katerem je stran, ki zahteva odgovor. Alternativa je pristop JSONP, ki vključuje uporabo kodiranega klica funkcije, posredovanega med odjemalcem in strežnikom, tako da lahko odjemalec naloži podatke, kodirane z JSON, iz domen tretjih oseb in obvesti klicatelja o dokončanju, čeprav to predstavlja nekaj varnostnih tveganj in dodatne zahteve strežnika.

Druga možnost je, da koda strani uporablja elemente za asinhrono zahtevanje podatkov JSON ali preprosto . Ti pristopi so bili pogosti pred široko razširjeno podporo za XMLHttpRequest.

Isti pravilnik izvora lahko uporabite tudi za prenos podatkov JSON z uporabo dinamičnih oznak, vendar to povzroči ranljivo kodo. Kot varnejša alternativa je bila predlagana uporaba JSONRequest.

Varnostna vprašanja

Čeprav je JSON zasnovan za prenos podatkov v serializirani obliki, njegova sintaksa sledi sintaksi JavaScripta, kar povzroča številne varnostne težave. Za obdelavo podatkov, prejetih iz zunanjega vira v formatu JSON, se zanje pogosto uporabi funkcija eval() brez kakršne koli predhodne potrditve.

JavaScript eval()

Ker se zdi, da je JSON sintaktično pravilen del kode JavaScript, je najenostavnejši način za razčlenitev podatkov JSON v programu JavaScript uporaba vgrajene funkcije JavaScript eval(), ki je zasnovana za izvajanje izrazov JavaScript. S tem pristopom ni potrebe po uporabi dodatnih razčlenjevalcev.

Tehnika eval() naredi sistem ranljiv, če vir uporabljenih podatkov JSON ni zaupanja vreden ( angleščina). Takšni podatki so lahko zlonamerna koda JavaScript za napade z vbrizgavanjem kode ( angleščina). Z uporabo te ranljivosti je mogoče ukrasti podatke in ponarediti avtentikacijo. Vendar pa je ranljivost mogoče odpraviti z uporabo dodatnih orodij za preverjanje podatkov. Na primer, pred izvedbo eval() je mogoče podatke, prejete iz zunanjega vira, preveriti z uporabo regularnih izrazov. RFC, ki definira JSON, predlaga uporabo naslednje kode za preverjanje, ali je skladna z obliko JSON

Spremembe my_JSON_object = ! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\] )*"/g , "" ) ) ) && eval("(" + besedilo + ")" ) ;

Kot varnejša alternativa eval() je bila predlagana nova funkcija parseJSON(), ki lahko obdeluje samo podatke JSON. Predstavljen je bil v različici 4 standarda ECMAScript in je opisan v članku "JSON: alternativa XML z nizko vsebnostjo maščob". Trenutno je na voljo kot knjižnica JavaScript in bo vključena v peto izdajo ECMAScript.

Vdelan JSON

Zadnje različice spletnih brskalnikov imajo vgrajeno podporo za JSON in ga zmorejo obdelati brez klica funkcije eval(), kar vodi do opisanega problema. Obdelava JSON je v tem primeru običajno hitrejša. Tako so imeli junija 2009 naslednji brskalniki vgrajeno podporo za JSON:

Vsaj pet priljubljenih knjižnic JavaScript uporablja vgrajeni JSON, ko je na voljo:

Ponarejanje zahtev med domenami

Zaradi slabe uporabe JSON so spletna mesta ranljiva za ponarejanje zahtev med spletnimi mesti (CSRF ali XSRF). Ker oznaka dovoljuje uporabo vira, ki ne pripada isti domeni kot vir, ki jo uporablja, omogoča izvajanje kode pod krinko podatkov JSON v kontekstu poljubne strani, kar omogoča ogrožanje gesel oz. drugi občutljivi podatki uporabnikov, pooblaščenih za drugo spletno mesto.

Zdi se, da je to težava le, če podatki JSON vsebujejo občutljive informacije, ki bi jih lahko ogrozila tretja oseba, in če se strežnik zanaša na politiko enega izvora ( angleščina), ki blokira dostop do podatkov, ko je zaznana zunanja zahteva. To ni težava, če strežnik določi veljavnost zahteve in posreduje podatke le, če so pravilni. Za ugotavljanje tega ni mogoče uporabiti piškotkov HTTP. Izključna uporaba piškotkov HTTP se uporablja za ponarejanje zahtev med spletnimi mesti.

JSONP in JSONPP

JSONP (JSON Padding) ali "JSON with padding" je razširitev JSON, ko je ime funkcije povratnega klica navedeno kot vhodni argument.

Tehnologija temelji na dejstvu, da varnostna politika brskalnika dovoljuje uporabo oznake za dostop do strežnikov, ki niso strežnik, s katerega je bila stran naložena.

Brez uporabe tehnologije JSONP (to je z uporabo samo kodiranja podatkov JSON) lahko strežnik vrne le podatke. Na primer takole:

("papir": "A4", "štetje": 5)

Vendar so to le podatki in ne morejo vplivati ​​na brskalnik.

Z uporabo tehnike JSONP se ime funkcije povratnega klica posreduje strežniku tretje osebe v klicni vrstici (GET):

Tu parameter jsonp vsebuje ime funkcije povratnega klica parseResponse.

Zdaj lahko tuji strežnik example.com vrne to kodo:

ParseResponse(( "papir" : "A4" , "štetje" : 5 ) )

Koda zdaj kliče funkcijo javascript prve domene.

Ideja je bila prvotno predlagana na blogu MacPython leta 2005 in jo trenutno uporabljajo številne aplikacije Web 2.0, kot so Dojo Toolkit Applications, Google Toolkit Applications in zanox Web Services. Predlagane so bile nadaljnje razširitve tega protokola, ki vključujejo dodatne argumente, kot je podpora JSONPP za spletne storitve S3DB.

Ker JSONP uporablja skriptne oznake, so klici v bistvu odprti svetu. Zaradi tega JSONP morda ni primeren za shranjevanje občutljivih podatkov.

Omogočanje skriptnih oznak z oddaljenih mest jim omogoča prenos katere koli vsebine na mestu. Če ima oddaljeno mesto ranljivosti, ki omogočajo vbrizgavanje Javascripta, lahko te vplivajo tudi na izvirno mesto.

JSONPP (parametriziran JSON z oblazinjenjem) Parametriziran JSON z oblazinjenjem – razvoj ideje JSONP

JSONPP vključuje izvorni URL, ime funkcije, ki bo obdelala podatke JSON, vrstico za eval po prejemu podatkov in vrstico za eval po končani obdelavi podatkov:

JSON_klic (SRC, JSONP, JSONPP, NALOŽI);

na koncu se obrne

Ans = JSONP(SRC) (eval(JSONPP(ans)) ; eval(ONLOAD) ;)

Na splošno število parametrov ni pomembno za samo idejo JSONPP. SRC, JSONP, JSONPP (in njihova obdelava na strani strežnika in nato na strani odjemalca) so dovolj, da je JSONPP.

Poglejmo primer dela s storitvijo S3DB.

Funkcija s3db_jsonpp_call(src, next_eval) ( var call = "call_" + Math .random () .toString () .replace (/\./g, "" ) ; var headID = document.getElementsByTagName ("head" ) [ 0 ] ; var script = document.createElement ("script" ); script.id = call; script.type = "text/javascript" ; // z uporabo oblazinjenega, parametriranega json src = src+ "&format=json&jsonp=s3db_jsonpp&jsonpp=" + next_eval+ "&onload=remove_element_by_id("" + script.id + "")" ; script.src = src; headID.appendChild (script) ; // pridobi odgovor ) funkcija s3db_jsonpp(ans, jsonpp) ( eval(jsonpp) ; vrni ans ; ) funkcija remove_element_by_id(id) ( var e = document.getElementById (id) ; e.parentNode .removeChild (e) ; return false ; )

V primeru funkcija s3db_jsonpp_call() ustvari element skripta v DOM v glavnem delu, katerega src ustreza klicu JSONPP.

Po prejemu odgovora strežnika bo poklican s3db_jsonpp() - posredovan je v klicnih parametrih, kot bi moralo biti po pravilih JSONP.

Znotraj s3db_jsonpp() se bo eval(jsonpp) sprožil in vrnil vrednost ans.

Klic eval(onload) vodi do izvedbe remove_element_by_id() z id-jem ustvarjenega skripta v glavi in ​​na koncu do njegovega izbrisa, ker tako ali tako ne bo uporabljen, saj je bil id v primeru ustvarjen naključno na samem začetku funkcijo s3db_jsonpp_call(). Ta klic je v odgovoru strežnika.

Sklici na objekte

Standard JSON ne podpira referenc objektov, vendar Dojo Toolkit prikazuje, kako lahko standardni JSON podpira takšne reference z uporabo dodatnih konvencij. Zlasti modul dojox.json.ref zagotavlja podporo za več oblik povezav, vključno s krožnimi, večkratnimi povezavami, povezavami med dokumenti in lenimi povezavami.

Glej tudi opombe
  • YAML ni označevalni jezik (YAML™), različica 1.2 (angleščina) . - Delovni osnutek 2008-05-11.(nedostopna povezava - zgodba) Pridobljeno 24. septembra 2009.
  • . RedHanded (7. april 2005). Pridobljeno 25. septembra 2012. .
  • Json.Com Predlog sheme JSON (nedostopna povezava - zgodba)
  • RFC 4627
  • JSON: alternativa XML-ju brez maščobe. Arhivirano
  • json2.js (angleščina) . Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 24. septembra 2009.
  • Uporaba vdelanega JSON.
  • Vdelan JSON v IE8. Arhivirano iz izvirnika 12. februarja 2012.
  • Spletne specifikacije, podprte v Opera Presto 2.5 (angleščina) (10. marec 2010). Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 29. marca 2010.
  • Izvedba objekta JSON ES 3.1.
  • Vstopnica #4429lang=en . Arhivirano iz izvirnika 12. februarja 2012.
  • Vstopnica #4429 (22. maj 2009). Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 3. julija 2009.
  • Vstopnica #8111lang=en . Arhivirano iz izvirnika 12. februarja 2012.
  • MooTools Core & More 1.3.1. Arhivirano iz izvirnika 12. februarja 2012.
  • YUI 2: pripomoček JSON (1. september 2009). Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 22. oktobra 2009.
  • Naučite se JSON (7. april 2010). Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 7. aprila 2010.
  • Jeremy Grossman Napredne tehnike napadov na spletne aplikacije, ki uporabljajo GMail. Varnost WhiteHat. Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 23. septembra 2009.
  • iz __prihodnjega__ uvoza * » Oddaljeni JSON - JSONP . Bob.pythonmac.org. Arhivirano iz izvirnika 12. februarja 2012. Pridobljeno 8. septembra 2008.
  • Almeida, Jonas (11. junij 2008). "JSON, JSONP, JSONPP? «(S3DB). Pridobljeno 26. 4. 2009.
  • RIAspot JSON P za Cross Site XHR .(nedostopna povezava - zgodba)
  • JSON sklicevanje v Doju. Arhivirano iz izvirnika 12. februarja 2012.
  • Povezave
    • Uradna domača stran v ruskem jeziku
    • json.js, json2.js je knjižnica, ki jo je razvil Douglas Crockford za delo s podatki JSON v JavaScriptu. Razširi objekt z metodo toJSONString, ki je nato prisotna v katerem koli objektu, in ga pretvori v niz zapisa JSON.
    • json-rpc.org (angleščina)
    Označevalni jeziki dokumentovPisarniški dokumenti

    JSON ali JavaScript Object Notation je format, ki implementira nestrukturirano besedilno predstavitev strukturiranih podatkov na podlagi načela parov ključ-vrednost in urejenih seznamov. Čeprav JSON izvira iz JavaScripta, je podprt v večini jezikov, bodisi izvorno bodisi s pomočjo posebnih knjižnic. Običajno se Json uporablja za izmenjavo informacij med spletnimi odjemalci in spletnim strežnikom.

    V zadnjih 15 letih je JSON postal uradni standard za izmenjavo podatkov in se uporablja skoraj povsod na internetu. Danes ga uporabljajo skoraj vsi spletni strežniki. Drugi razlog za to priljubljenost je bilo dejstvo, da je veliko baz podatkov podpiralo JSON. Sodobne relacijske baze podatkov, kot sta PostgreSQL in MySQL, zdaj podpirajo shranjevanje in izvoz podatkov v JSON. Podatkovne baze, kot sta MongoDB in Neo4j, podpirajo tudi JSON, čeprav MongoDB uporablja nekoliko spremenjeno različico JSON. V tem članku si bomo ogledali, kaj je JSON, njegove prednosti pred XML, slabosti in kdaj ga je najbolje uporabiti.

    Če želite razumeti, zakaj je format JSON potreben in kako deluje, potrebujete prakso. Najprej si poglejmo ta primer:

    {
    "firstName": "Jonatan",
    “lastName”: “Freeman”,
    “loginCount”: 4,
    "isWriter": res,
    »worksWith«: [»Spantree Technology Group«, »InfoWorld«],
    “hišni ljubljenčki”: [
    {
    "ime": "Lilly",
    “vrsta”: “rakun”
    }
    ]
    }

    V tem okviru smo jasno opredelili nekatere lastnosti osebe. Najprej smo ugotovili ime, priimek, število prijav v sistem, ali je ta oseba pisatelj, seznam podjetij, s katerimi sodeluje, in seznam hišnih ljubljenčkov. Takšno ali podobno strukturo lahko s strežnika prenesemo v spletni brskalnik ali mobilno aplikacijo, ki lahko nato s temi podatki naredi, kar hoče, jih na primer prikaže ali shrani.

    JSON je splošna podatkovna oblika z najmanjšim številom vrst vrednosti – nizi, števila, logične vrednosti (ena ali nič), seznami, objekti in nič. Čeprav je JSON podmnožica JavaScripta, ima večina priljubljenih programskih jezikov te vrste podatkov, zaradi česar je JSON dober kandidat za prenos podatkov med programi, napisanimi v različnih jezikih.

    Zakaj bi morali uporabljati JSON?

    Da bi razumeli uporabnost in pomen JSON, moramo razumeti nekaj o zgodovini interaktivnosti na internetu. V začetku leta 2000 se je interaktivnost spletnih mest začela spreminjati. Takrat je brskalnik služil zgolj prikazovanju informacij, spletni strežnik pa je opravil vse delo priprave vsebine za prikaz. Ko je uporabnik kliknil gumb v brskalniku, je bila zahteva poslana strežniku, kjer je bila sestavljena in poslana stran HTML, pripravljena za prikaz. Ta mehanizem je bil počasen in neučinkovit. To je zahtevalo, da brskalnik znova upodablja vse na strani, tudi če se je majhen del podatkov spremenil.

    Takrat so se prenosi zaračunavali glede na količino prenesenih podatkov, zato so razvijalci ugotovili, da je ponovno nalaganje celotne strani zelo drago, in razmislili o novih tehnologijah za izboljšanje uporabniškega vmesnika. Nato se je izkazalo, da je možnost izvajanja spletnih zahtev v ozadju, ki je bila dodana v Internet Explorerju 5, dokaj izvedljiv pristop k postopnemu nalaganju podatkov za prikaz. Namesto ponovnega nalaganja strani bo klik na gumb preprosto izdal spletno zahtevo, ki se bo izvajala v ozadju. Vsebina bo posodobljena takoj, ko se naloži. Upravljate ga lahko s pomočjo JavaScripta, univerzalnega programskega jezika za brskalnike.

    Sprva so bili podatki preneseni v formatu XML, vendar jih je bilo težko uporabljati v JavaScriptu. JavaScript je že imel objekte, ki so bili uporabljeni za predstavitev podatkov v jeziku, zato je Douglas Crockford vzel objektno sintakso JS in jo uporabil kot specifikacijo za novo obliko izmenjave podatkov, imenovano JSON. To obliko je bilo veliko lažje brati in razčleniti v brskalniku JavaScript. Kmalu so razvijalci začeli uporabljati JSON namesto XML.

    Danes je hitra izmenjava podatkov JSON de facto standard za prenos podatkov med strežnikom in odjemalcem, mobilnimi aplikacijami in celo notranjimi sistemskimi storitvami.

    JSON proti XML

    Kot sem rekel zgoraj, je bila in je glavna alternativa JSON XML. Vendar je XML v novih sistemih vse manj pogost. In zelo enostavno je razumeti, zakaj. Spodaj je primer zapisovanja podatkov, ki ste jih videli zgoraj, v Json prek XML:


    Jonathan
    Freeman
    4
    prav

    Tehnološka skupina Spantree
    InfoWorld

    Lilly
    Rakun


    Poleg redundance kode, ki je v bistvu zavzela dvakrat več prostora za zapis podatkov, XML vnaša tudi nekaj dvoumnosti pri analizi strukture podatkov. Pretvorba XML v objekt JavaScript lahko zahteva na desetine do stotine vrstic kode in zahteva natančno nastavitev za vsak predmet, ki ga razčlenjujete. Pretvarjanje JSON v objekt JavaScript se izvede v eni vrstici in ne zahteva predznanja o objektu, ki ga razčlenjujete.

    Omejitve JSON

    Čeprav je JSON razmeroma stisnjen in prilagodljiv format podatkov, s katerim je enostavno delati v številnih programskih jezikih, ima nekaj pomanjkljivosti. Tukaj je nekaj omejitev:

    • Brez strukture. Po eni strani to pomeni, da imate popolno prilagodljivost pri predstavitvi podatkov na kakršen koli način. Po drugi strani pa lahko enostavno shranite nestrukturirane podatke.
    • Samo ena vrsta številk. Podprt je format s plavajočo vejico in dvojno natančnostjo IEEE-754. To je precej, vendar ne morete uporabljati različnih številskih tipov, ki jih imajo drugi jeziki.
    • Ni vrste datuma. razvijalci morajo uporabljati nizovne predstavitve datumov, kar lahko povzroči nedoslednosti oblikovanja. Ali pa kot datum uporabite število milisekund, ki so pretekle od začetka epohe Unix (1. januar 1970).
    • Brez komentarjev – ne boste mogli komentirati polj, ki jih zahtevajo, neposredno v kodi.
    • Natančno – Čeprav je JSON manj natančen kot XML, ni najbolj jedrnat format za izmenjavo podatkov. Za vrhunske ali specializirane storitve boste želeli uporabiti učinkovitejše formate.
    Kdaj morate uporabiti JSON?

    Če razvijate programsko opremo, ki komunicira z brskalnikom ali izvorno mobilno aplikacijo, je bolje, da uporabite JSON. Uporaba XML je zastarela. Za komunikacijo med strežniki JSON morda ni zelo učinkovit in bolje je uporabiti ogrodje za serializacijo, podobno Apache Avro ali Apache Thrift. Tudi tukaj JSON ni slaba izbira in vam lahko ponudi vse, kar potrebujete. Ni pa natančnega odgovora, kaj izbrati.

    Če uporabljate baze podatkov MySQL, bo vaš program močno odvisen od tega, kaj se izvaja v bazi podatkov. V relacijskih podatkovnih zbirkah, ki podpirajo JSON, velja, da je uporaba čim manjše količine le-tega dobra praksa. Relacijske baze podatkov so bile zasnovane za podatke s specifično shemo. Čeprav večina zdaj podpira podatkovni format JSON, bo zmogljivost dela z njim bistveno nižja.

    zaključki

    JSON je podatkovni format, namenjen predvsem pošiljanju podatkov med spletnimi strežniki in brskalniki ali mobilnimi aplikacijami. Format ima preprosto zasnovo in prilagodljivost, je enostaven za branje in razumevanje, delo s takimi podatki pa je preprosto v večini programskih jezikov. Pomanjkanje stroge sheme omogoča prilagodljivost formata, vendar lahko ta prilagodljivost včasih oteži branje in razumevanje podatkov.

    Morda boste težko delali z JSON v strogo tipkanih jezikih, kot sta Scala ali Elm, vendar široko sprejetje formata pomeni, da obstajajo pripomočki in knjižnice za pomoč pri celo zapletenih težavah. Zdaj veste, kaj je json in kako ga uporabljati.

    Kaj je JSON in kaj zmore? V tem članku se boste naučili uporabljati JSON za preprosto delo s podatki. Ogledali si bomo tudi, kako delati z JSON z uporabo PHP in JavaScript.

    Če ste razvijali spletna mesta ali spletne aplikacije na splošno, ste verjetno že slišali za JSON, vsaj mimogrede. Toda kaj točno pomeni JSON? Kaj lahko naredi ta oblika podatkov in kako se lahko uporablja?

    V tem članku se bomo naučili osnov dela s formatom json. Spremljali bomo naslednje teme:

    • Kaj je format JSON?
    • Kako ustvariti nize JSON?
    • Preprost primer podatkov JSON
    • Primerjava JSON z XML

    Začnimo!

    Kaj je format JSON?

    JSON je preprost način za shranjevanje in prenos strukturiranih podatkov, ki temelji na besedilu. Z uporabo preproste sintakse lahko enostavno shranite tako preproste številke in nize kot tudi nize in predmete, pri čemer uporabite samo besedilo. Prav tako lahko povežete predmete in nize, kar vam omogoča ustvarjanje kompleksnih podatkovnih struktur.

    Ko je niz JSON ustvarjen, ga je mogoče enostavno poslati kateri koli aplikaciji ali računalniku, saj je samo besedilo.

    JSON ima veliko prednosti:

    • Je kompakten
    • Človeško berljiv in računalnik ga je enostavno prebrati
    • Preprosto ga je mogoče pretvoriti v formate programske opreme: številske vrednosti, nize, logični format, ničelno vrednost, nize in asociativne nize.
    • Skoraj vsi programski jeziki imajo funkcije, ki vam omogočajo branje in ustvarjanje zapisa podatkov json.

    Dobesedno okrajšava JSON pomeni JavaScript Object Notation. Kot je bilo že opisano, ta oblika temelji na ustvarjanju objektov, nekaj podobnega asociativnim poljem v drugih programskih jezikih.

    Za kakšne namene se uporablja JSON?

    Predvsem se json uporablja za izmenjavo podatkov med javascriptom in strežniško stranjo (php). Z drugimi besedami, za tehnologijo ajax. To je zelo priročno, ko posredujete več spremenljivk ali celotne podatkovne nize.

    Tako je videti na primeru:

  • Uporabnik klikne na sličico
  • JavaScript obdela ta dogodek in pošlje zahtevo ajax skriptu PHP, ki posreduje ID slike.
  • Na strežniku php prejme opis slike, ime slike, naslov velike slike in druge podatke iz baze. Ko ga prejme, ga pretvori v format JSON in pošlje nazaj na uporabnikovo stran.
  • JavaScript prejme odgovor v obliki JSON, obdela podatke, ustvari html kodo in prikaže povečano sliko z opisom in drugimi informacijami.
  • Tako se slika poveča brez ponovnega nalaganja strani v brskalniku. To je zelo priročno, ko moramo prejeti delne podatke ali prenesti majhno količino informacij na strežnik.

    Vsem najljubši jQuery ima funkciji getJSON() in parseJSON(), ki vam pomagata delati s formatom prek zahtev ajax.

    Kako ustvariti nize JSON?


    Spodaj so osnovna pravila za ustvarjanje nizov JSON:

    • Niz JSON vsebuje matriko vrednosti in predmet (asociativno matriko s pari ime/vrednost).
    • Matrika mora biti zavita v oglate oklepaje, [ in ], in lahko vsebuje seznam vrednosti, ki so ločene z vejico.
    • Predmeti so oviti z zavitimi rokami ( in ) in vsebujejo tudi pare imena/vrednosti, ločene z vejico.
    • Pari ime/vrednost so sestavljeni iz imena polja (v dvojnih narekovajih), ki mu sledi dvopičje (:), ki mu sledi vrednost polja.
    • Vrednosti v nizu ali predmetu so lahko:
      • Numerično (celo število ali ulomek s pikami)
      • Nizi (zaviti v dvojne narekovaje)
      • Boolean (true ali false)
      • Druge matrike (zavite v oglate oklepaje [ in ])
      • Drugi predmeti (oviti v kodraste roke ( in ))
      • Ničelna vrednost

    Pomembno! Če v vrednostih uporabljate dvojne narekovaje, jih umaknite s poševnico nazaj: \". Uporabite lahko tudi šestnajstiške kodirane znake, tako kot to počnete v drugih programskih jezikih.

    Preprost primer podatkov JSON

    Naslednji primer prikazuje, kako lahko shranite podatke v “košarico” spletne trgovine v formatu JSON:

    ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true )

    Razčlenimo te podatke po delih:

  • Na začetku in koncu uporabimo zavita kraka ( in ), da je jasno, da gre za predmet.
  • Znotraj objekta imamo več parov ime/vrednost:
  • "orderID": 12345 - polje z imenom orderId in vrednostjo 12345
  • "shopperName": "John Smith" – polje z imenom shopperName in vrednostjo John Smith
  • "shopperEmail": "johnsmith@ example.com" - podobno kot v prejšnjem polju je tukaj shranjena e-pošta kupca.
  • "contents": [ ... ] - polje z imenom content, katerega vrednost je niz.
  • "orderCompleted": true – polje z imenom orderCompleted, katerega vrednost je true
  • Znotraj matrike contents imamo dva objekta, ki prikazujeta vsebino košarice. Vsak predmet izdelka ima tri lastnosti: productID, productName, količina.
  • Nazadnje, ker je JSON enak objektom v JavaScriptu, lahko enostavno vzamete ta primer in iz njega ustvarite objekt JavaScript:

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true );

    Primerjava JSON z XML

    V večini primerov si boste JSON predstavljali kot alternativo XML-ju – vsaj v spletnih aplikacijah. Koncept Ajax prvotno uporablja XML za izmenjavo podatkov med strežnikom in brskalnikom, v zadnjih letih pa je JSON postal bolj priljubljen za prenos podatkov ajax.

    Čeprav je XML preizkušena tehnologija, ki jo uporabljajo številne aplikacije, so prednosti zapisa JSON v tem, da je bolj kompakten ter lažji za pisanje in branje.

    Tukaj je zgornji primer JSON, samo prepisan v formatu XML:

    orderID 12345 shopperName John Smith shopperEmail [e-pošta zaščitena] vsebina productID 34 productName SuperWidget količina 1 productID 56 productName WonderWidget količina 3 orderCompleted true

    Kot lahko vidite, je nekajkrat daljši od JSON. Dejansko je ta primer dolg 1128 znakov, medtem ko je različica JSON le 323 znakov. Različica XML je tudi težje berljiva.

    Seveda ne moremo soditi le z enim primerom, vendar že majhne količine informacij v formatu JSON zavzamejo manj prostora kot v XML.

    Kako delati z JSON prek PHP in JS?

    Zdaj smo prišli do najbolj zanimivega dela - praktične strani zapisa JSON. Najprej se poklonimo JavaScriptu, nato pa bomo videli, kako lahko manipulirate z JSON prek PHP.

    Ustvarjanje in branje formata JSON z uporabo JavaScripta


    Čeprav je format JSON preprost, ga je pri razvoju spletnih aplikacij težko pisati ročno. Poleg tega morate nize JSON pogosto pretvoriti v spremenljivke in jih nato uporabiti v svoji kodi.

    Na srečo številni programski jeziki ponujajo orodja za delo z nizi JSON. Glavna ideja katere:

    Če želite ustvariti nize JSON, začnete s spremenljivkami, ki vsebujejo nekaj vrednosti, nato pa jih posredujete skozi funkcijo, ki podatke pretvori v niz JSON.

    Pri branju nizov JSON začnete z nizom JSON, ki vsebuje določene podatke, niz posredujete skozi funkcijo, ki ustvari spremenljivke, ki vsebujejo podatke.

    Poglejmo, kako je to storjeno v JavaScriptu.

    Ustvarjanje niza JSON iz spremenljivke JavaScript

    JavaScript ima vgrajeno metodo JSON.stringify(), ki sprejme spremenljivko javascript in vrne niz json, ki predstavlja vsebino spremenljivke. Na primer, uporabimo predhodno ustvarjen predmet in ga pretvorimo v niz JSON.

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true); opozorilo (JSON.stringify(cart));

    To se bo prikazalo na zaslonu:

    ("orderID":12345,"shopperName":"John Smith","shopperEmail":" [e-pošta zaščitena]", "contents":[("productID":34,"productName":"SuperWidget","quantity":1), ("productID":56,"productName":"WonderWidget","quantity":3) ], "orderCompleted":true)

    Upoštevajte, da JSON.stringify() izpiše nize JSON brez presledkov. Težko berljiv, je pa bolj kompakten, kar je pomembno pri pošiljanju podatkov.

    Ustvarjanje spremenljivke JavaScript iz niza JSON

    Obstaja več načinov za razčlenjevanje nizov JSON, najbolj sprejemljiv in varen je uporaba metode JSON.parse(). Vzame niz JSON in vrne objekt ali matriko JavaScript, ki vsebuje podatke JSON. Tukaj je primer:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [e-pošta zaščitena]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "SuperWidget", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": " WonderWidget", \"količina": 3\ ) \ ], \"orderCompleted": true \ ) \"; var cart = JSON.parse(jsonString); opozorilo(cart.shopperEmail); opozorilo(cart.contents.productName);

    Tu smo ustvarili spremenljivko, jsonString, ki vsebuje niz JSON iz predhodno navedenih primerov. Nato smo ta niz posredovali skozi JSON.parse(), da smo ustvarili objekt s podatki JSON, ki so bili shranjeni v spremenljivki cart. Nazadnje preverimo razpoložljivost podatkov in prikažemo nekaj informacij z opozorilnim modalnim oknom.

    Prikazane bodo naslednje informacije:

    V pravi spletni aplikaciji bi morala vaša koda JavaScript prejeti niz JSON kot odgovor strežnika (po pošiljanju zahteve AJAX), nato pa niz razčleniti in uporabniku prikazati vsebino košarice.

    Ustvarjanje in branje formata JSON z uporabo PHP

    PHP ima tako kot JavaScript funkcije, ki vam omogočajo pretvorbo spremenljivk v format JSON in obratno. Poglejmo jih.

    Ustvarjanje niza JSON iz spremenljivke PHP

    Json_encode() sprejme spremenljivko PHP in vrne niz JSON, ki predstavlja podatke spremenljivke. Tukaj je naš primer "vozička", napisanega v PHP:

    Ta koda ustvari popolnoma enak rezultat kot primer JavaScript - veljaven niz JSON, ki predstavlja vsebino spremenljivk:

    ("orderID":12345,"shopperName":"John Smith","shopperEmail":" [e-pošta zaščitena]","contents":[("productID":34,"productName":"SuperWidget","quantity":1),("productID":56,"productName":"WonderWidget","quantity":3) ],"orderCompleted":true)

    V resnici bi moral vaš skript PHP poslati niz JSON kot odgovor na zahtevo AJAX, kjer bo JavaScript uporabil JSON.parse(), da pretvori niz v spremenljivke.

    V funkciji json_encode() lahko določite dodatne parametre, ki vam omogočajo pretvorbo nekaterih znakov v šestnajstiško.

    Ustvarjanje spremenljivke PHP iz niza JSON

    Podobno kot zgoraj, obstaja funkcija json_decode(), ki vam omogoča dekodiranje nizov JSON in vstavljanje vsebine v spremenljivke.

    Kot pri JavaScriptu bo ta koda izpisala naslednje:

    [e-pošta zaščitena] WonderWidget

    Privzeto json_decode() vrne objekte JSON kot objekte PHP. Podobno kot običajna sintaksa uporabljamo -> za dostop do lastnosti predmeta.

    Če želite pozneje uporabiti podatke kot asociativno polje, preprosto posredujte drugi parameter true funkciji json_decode(). Tukaj je primer:

    $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
    "; echo $cart["contents"]["productName"] . "
    ";

    To daje enak rezultat:

    [e-pošta zaščitena] WonderWidget

    Prav tako lahko posredujete dodatne argumente funkciji json_decode(), da določite obdelavo velikih števil in rekurzije.

    Za zaključek o formatu JSON

    Če boste spletno aplikacijo izdelali s tehnologijo Ajax, boste zagotovo uporabljali format JSON za izmenjavo podatkov med strežnikom in brskalnikom.


    Zagotovo ste že kdaj slišali za JSON. Kaj je to? Kaj zmore in kako ga uporabljati?

    V tej vadnici bomo obravnavali osnove JSON in obravnavali naslednje točke:

    • Kaj je JSON?
    • Za kaj se uporablja JSON?
    • Kako ustvariti niz JSON?
    • Preprost primer niza JSON.
    • Primerjajmo JSON in XML.
    • Kako delati z JSON v JavaScriptu in PHP?
    Kaj je JSON?

    JSON je preprost način za shranjevanje in prenos strukturiranih podatkov, ki temelji na besedilu. S preprosto sintakso lahko preprosto shranite karkoli, od ene same številke do nizov, nizov in predmetov v navadnem besedilu. Prav tako lahko med seboj povežete nize in predmete, da ustvarite zapletene podatkovne strukture.

    Ko je niz JSON ustvarjen, ga je preprosto poslati v drugo aplikacijo ali na drugo lokacijo v omrežju, ker je navadno besedilo.

    JSON ima naslednje prednosti:

    • Je kompakten.
    • Njegove stavke zlahka berejo in sestavljajo tako ljudje kot računalniki.
    • Preprosto ga je mogoče pretvoriti v podatkovno strukturo za večino programskih jezikov (števila, nizi, logične vrednosti, nizi itd.)
    • Številni programski jeziki imajo funkcije in knjižnice za branje in ustvarjanje struktur JSON.

    Ime JSON je kratica za JavaScript Object Notation. Kot že ime pove, temelji na načinu definiranja predmetov (podobno kot ustvarjanje asociativnih nizov v drugih jezikih) in nizov.

    Za kaj se uporablja JSON?

    Najpogostejša uporaba JSON je pošiljanje podatkov s strežnika v brskalnik. Običajno se podatki JSON dostavljajo z uporabo AJAX-a, ki brskalniku in strežniku omogoča komunikacijo, ne da bi bilo treba ponovno naložiti stran.

  • Uporabnik klikne na sličico izdelka v spletni trgovini.
  • JavaScript, ki se izvaja v brskalniku, ustvari zahtevo AJAX za skript PHP, ki se izvaja na strežniku, in posreduje ID izbranega izdelka.
  • PHP skript pridobi ime izdelka, opis, ceno in druge informacije iz podatkovne baze. Nato iz podatkov sestavi niz JSON in ga pošlje v brskalnik.
  • JavaScript, ki se izvaja v brskalniku, prejme niz JSON, ga dekodira in uporabniku prikaže informacije o izdelku na strani.
  • JSON lahko uporabite tudi za pošiljanje podatkov iz brskalnika v strežnik, tako da posredujete niz JSON kot parameter zahtevam GET ali POST. Toda ta metoda je manj pogosta, saj je prenos podatkov prek zahtev AJAX mogoče poenostaviti. Na primer, ID izdelka je lahko vključen v URL kot del zahteve GET.

    Knjižnica jQuery ima več metod, kot sta getJSON() in parseJSON(), ki olajšajo pridobivanje podatkov z uporabo JSON prek zahtev AJAX.

    Kako ustvariti niz JSON?

    Obstaja nekaj osnovnih pravil za ustvarjanje niza JSON:

    • Niz JSON vsebuje matriko vrednosti ali predmet (asociativno matriko parov ime/vrednost).
    • Array je v oglatih oklepajih ([ in ]) in vsebuje z vejicami ločen seznam vrednosti.
    • Predmet je v zavitih oklepajih (( in )) in vsebuje z vejicami ločen seznam parov ime/vrednost.
    • par ime/vrednost je sestavljeno iz imena polja v dvojnih narekovajih, ki mu sledita dvopičje (:) in vrednost polja.
    • Pomen v nizu ali objektu je lahko:
      • Število (celo število ali plavajoča vejica)
      • Niz (v dvojnih narekovajih)
      • Logična vrednost (true ali false)
      • Drugo polje (v oglatih oklepajih)
      • Drug predmet (v zavitih oklepajih)
      • ničelna vrednost

    Če želite v niz vključiti dvojne narekovaje, morate uporabiti poševnico nazaj: \" . Kot pri mnogih programskih jezikih lahko v niz vstavite kontrolne znake in šestnajstiške kode tako, da pred njimi postavite poševnico nazaj. Za podrobnosti glejte spletno mesto JSON.

    Preprost primer niza JSON

    Spodaj je primer naročanja v formatu JSON:

    ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "Super izdelek", "quantity": 1 ), ( "productID": 56, "productName": "Čudežni izdelek", "quantity": 3 ) ], "orderCompleted": true )

    Oglejmo si vrstico podrobno:

    • Objekt ustvarimo z uporabo zavitih oklepajev (( in )).
    • Objekt ima več parov ime/vrednost: "orderID": 12345 Lastnost z imenom "orderId" in celoštevilsko vrednostjo 12345 "shopperName": "Vanya Ivanov" lastnost z imenom "shopperName" in vrednostjo niza "Vanya Ivanov " "shopperEmail": " [e-pošta zaščitena]" Lastnost z imenom "shopperEmail" z vrednostjo niza " [e-pošta zaščitena]" "contents": [ ... ] Lastnost z imenom "contents", katere vrednost je matrika "orderCompleted": true Lastnost z imenom "orderCompleted" in logična vrednost true
    • V matriki "vsebina" sta 2 predmeta, ki predstavljata posamezne postavke v naročilu. Vsak predmet vsebuje 3 lastnosti: productID, productName in quantity.

    Mimogrede, ker JSON temelji na deklaraciji objektov JavaScript, lahko hitro in preprosto naredite zgornji niz JSON kot objekt JavaScript:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "Super izdelek", "quantity": 1 ), ( "productID": 56, "productName": "Čudežni izdelek", "quantity": 3 ) ], "orderCompleted": true );

    Primerjava JSON in XML

    V mnogih pogledih si lahko JSON predstavljate kot alternativo XML-ju, vsaj v prostoru spletnih aplikacij. Koncept AJAX je prvotno temeljil na uporabi XML za prenos podatkov med strežnikom in brskalnikom. Toda v zadnjih letih postaja JSON vse bolj priljubljen za prenos podatkov AJAX.

    Medtem ko je XML preizkušena tehnologija, ki se uporablja v precejšnjem številu aplikacij, ima JSON to prednost, da je bolj kompakten in lažje prepoznaven format podatkov.

    Tako bi izgledal zgornji primer objekta v XML:

    orderID 12345 shopperName Vanya Ivanov e-pošta kupca [e-pošta zaščitena] vsebina productID 34 productName Super izdelek količina 1 productID 56 productName Čudežni izdelek količina 3 orderCompleted true

    Različica XML je bistveno večja. V resnici je dolg 1128 znakov, medtem ko je različica JSON dolga le 323 znakov. Različica XML je tudi precej težko razumljiva.

    Seveda je to radikalen primer. Poleg tega je mogoče ustvariti bolj kompakten zapis XML. Toda tudi ta bo bistveno daljši od ekvivalenta JSON.

    Delo z nizom JSON v JavaScriptu

    JSON ima preprosto obliko, vendar je ročno ustvarjanje niza JSON precej dolgočasno. Poleg tega morate pogosto vzeti niz JSON, pretvoriti njegovo vsebino v spremenljivko, ki jo je mogoče uporabiti v kodi.

    Večina programskih jezikov ima orodja za preprosto pretvorbo spremenljivk v nize JSON in obratno.

    Ustvarjanje niza JSON iz spremenljivke

    JavaScript ima vgrajeno metodo JSON.stringify(), ki sprejme spremenljivko in vrne niz JSON, ki predstavlja njeno vsebino. Na primer, ustvarimo objekt JavaScript, ki vsebuje informacije o naročilu iz našega primera, nato pa iz njega ustvarimo niz JSON:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-pošta zaščitena]", "contents": [ ( "productID": 34, "productName": "Super izdelek", "quantity": 1 ), ( "productID": 56, "productName": "Čudežni izdelek", "quantity": 3 ) ], "orderCompleted": true ); opozorilo (JSON.stringify(cart));

    Ta koda bo ustvarila:

    Upoštevajte, da metoda JSON.stringify() vrne niz JSON brez presledkov. Težje je berljiv, je pa bolj kompakten za prenos po omrežju.

    Obstaja več načinov za razčlenitev niza JSON v JavaScriptu, vendar je najvarnejši in najzanesljivejši uporaba vgrajene metode JSON.parse(). Prejme niz JSON in vrne objekt ali matriko JavaScript, ki vsebuje podatke. Na primer:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [e-pošta zaščitena]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Super izdelek", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": "Čudežno blago", \"količina": 3\ ) \ ], \"orderCompleted": true \ ) \"; var cart = JSON.parse(jsonString); opozorilo(cart.shopperEmail); opozorilo(cart.contents.productName);

    Ustvarili smo spremenljivko jsonString, ki vsebuje niz JSON našega vzorčnega naročila. Ta niz nato posredujemo metodi JSON.parse(), ki ustvari objekt, ki vsebuje podatke JSON, in ga shrani v spremenljivko cart. Vse, kar ostane, je preveriti s prikazom lastnosti objekta shopperEmail in productName matrike contents.

    Kot rezultat bomo dobili naslednji rezultat:

    V resnični aplikaciji bi vaša koda JavaScript naročilo prejela kot niz JSON v odgovoru AJAX iz skripta strežnika, posredovala niz metodi JSON.parse() in nato uporabila podatke za prikaz na strani uporabnika.

    JSON.stringify() in JSON.parse() imata druge zmožnosti, kot je uporaba funkcij povratnega klica za pretvorbo določenih podatkov po meri. Takšne možnosti so zelo uporabne za pretvorbo različnih podatkov v ustrezne objekte JavaScript.

    Delo z nizom JSON v PHP

    PHP ima tako kot JavaScript vgrajene funkcije za delo z nizi JSON.

    Ustvarjanje niza JSON iz spremenljivke PHP

    Funkcija json_encode() sprejme spremenljivko PHP in vrne niz JSON, ki predstavlja vsebino spremenljivke. Tukaj je naš primer naročila, napisan v PHP:

    Ta koda vrne popolnoma enak niz JSON kot v primeru JavaScript:

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [e-pošta zaščitena]","contents":[("productID":34,"productName":"Super izdelek","quantity":1),("productID":56,"productName":"Čudežni izdelek","količina": 3)],"naročilo dokončano":true)

    V resnični aplikaciji bo vaš skript PHP poslal ta niz JSON kot del odgovora AJAX brskalniku, kjer ga bo koda JavaScript z uporabo metode JSON.parse() razčlenila nazaj v spremenljivko za prikaz na strani uporabnika. .

    Funkciji json_encode() lahko kot drugi argument posredujete različne zastavice. Z njihovo pomočjo lahko spremenite principe kodiranja vsebine spremenljivk v niz JSON.

    Ustvarite spremenljivko iz niza JSON

    Če želite pretvoriti niz JSON v spremenljivko PHP, uporabite metodo json_decode(). Zamenjajmo naš primer za JavaScript z metodo JSON.parse() s kodo PHP:

    Kot pri JavaScriptu bo ta koda ustvarila:

    [e-pošta zaščitena]Čudežni izdelek

    Funkcija json_decode() privzeto vrne objekte JSON kot objekte PHP. Obstajajo generični objekti PHP razreda stdClass. Zato uporabljamo -> za dostop do lastnosti predmeta v zgornjem primeru.

    Če potrebujete objekt JSON kot povezano matriko PHP, morate posredovati true kot drugi argument funkciji json_decode(). Na primer:

    $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
    "; echo $cart["contents"]["productName"] . "
    ";

    Ta koda bo ustvarila enak rezultat:

    [e-pošta zaščitena]Čudežni izdelek

    Funkciji json_decode() lahko posredujete tudi druge argumente, da določite globino rekurzije in kako ravnati z velikimi celimi števili.

    Zaključek

    Čeprav je JSON enostaven za razumevanje in uporabo, je zelo uporabno in prilagodljivo orodje za prenos podatkov med aplikacijami in računalniki, zlasti pri uporabi AJAX. Če nameravate razviti aplikacijo AJAX, potem ni dvoma, da bo JSON postal bistveno orodje v vaši delavnici.