1 / 17

JSON

JSON. JavaScript Object Notation. 11732 Milo š Davidović. Uvod. JSON je jednostavan, tekstualan, otvoreni standard dizajniran za čitljivu razmenu podataka. Izveden je iz JavaScript jezika za predstavljanje jednostavnih struktura podataka i asocijativnih nizova, odnosno objekata.

zion
Télécharger la présentation

JSON

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSON JavaScript Object Notation 11732 Miloš Davidović

  2. Uvod • JSON je jednostavan, tekstualan, otvoreni standard dizajniran za čitljivu razmenu podataka. • Izveden je iz JavaScript jezika za predstavljanje jednostavnih struktura podataka i asocijativnih nizova, odnosno objekata. • Uprkos njegovoj bliskoj vezi sa JavaScript-om, JSON je nezavisan jezik sa parserima iza mnogedruge jezike. Ekstenzija je .json. • JSON format je često korišćen za serijalizaciju i prenos struktuiranih podataka preko mrežne veze, prvenstveno između servera i web aplikaicja, služeći kao alternativa za XML.

  3. Istorija • Prvi put korišćen u „State Software” kompaniji čiji je osnivač Douglas Crockford. • JSON.org, je počeo sa radom 2002. godine. Decembra 2005. Yahoo počijne sa upotrebom JSON-a na nekim od svojih web servisa. Google počinje sa upotrebom JSON-a za svoje GData web protokole decembra 2006. • Iako je JSON bio zasnovan na podsetu JavaScript-a i uglavnom upotrevljavan sa tim jezikom, svrstava se u nezavistan format podataka. • Kod za parsiranje i kreiranje JSON podataka je dostupan za veliki broj programskih jezika. JSON-ov web sajt obezbeđuje obimnu listu postojećih JSON biblioteka.

  4. Gramatika • JSON - tekst se sastojiodsekvencetokena. Set tokenauključuje set strukturnihkaraktera, stringove, brojeve, false, true i null. • JSON tekst je serijalizovan objekat ili niz. • JSON je tekst format za serijalizaciju struktuiranih podataka. Izveden je iz objekta literala JavaScript-a, kao sto je definisano u ECMAScript Programming Language. • String je sekvenca nula ili vise Unicode karaktera. • Objekat je neuređena kolekcija nula ili vise imena/promenljivih, gde je ime tipa string, a vrednosti moze biti string, bollean, null, objekat ili niz. • Niz je uređena sekvenca nula ili nekih drugih vrednosti. Termini „objekat” i „niz” potiču iz JavaScript-a. • Cilj JSON-a je da bude minimalan, portabilan, tekstualan i podskup JavaScript-a.

  5. Ograničenja • Određene reči moraju biti ispisane malim slovima: • false, null, true, object, array, number i string. • Struktura objekta mora biti ograničena „{ }”. • Imena objekata trebaju biti jedinstvena. • Nizovi se predstavljaju „[ ]”, a elementi se odvajaju „ , ” . • Brojevi su slični kao i u mnogim programskim jezicima, dozvoljeno je stavljanje „ - ” ili E za eksponent. Decimale su dozvoljene. • Oktalni i heksadekadni brojevi nisu dozvoljeni kao i 0 na prvom mestu. • Stringovi počinju i završavaju sesa „”.

  6. Primer 1: (predstavljanje objekta) • Objekat ima string polja za ime i prezime, polje za godine, i sadrzi i objekat koji ima adresu i broj telefona. { "firstName": "John", "lastName" : "Smith", "age" : 25, "address" : { "streetAddress": "21 2nd Street", "city" : "New York", "state" : "NY", "postalCode" : "10021" },

  7. Primer 1 (nastavak) "phoneNumber": [ { "type" : "home", "number": "212 555-1234" }, { "type" : "fax", "number": "646 555-4567" } ] }

  8. Pošto je JSON podset JavaScript-a, moguće je parsiranje JSON teksta u objekat, koristeći JavaScript funkciju eval(). • Npr. ako gore navedeni podatak sadrži JavaScript string promenljivu contact, moguće je kreirati JavaScript objekat p:var p = eval("(" + contact + ")"); • Promenljiva contact mora biti oivičena zagradama da bi se izbegla dvosmislenost u JavaScript sintaksi. • Preporučljiv način je da se koristi JSON parser. Ukoliko nismo sigurni u ispravnost teksta,ilipostojimogućnost da će se on shvatiti dvosmisleno, treba izbegavati funkciju eval(). • Ispravno implementiran JSON parser će prihvatiti samo ispravan JSON, sprečavajući na taj način izvršenje loših i neispravnih programa. • Današnji browseri kao sto su Firefox, Chrome, IE8 sadrže specijalne karakteristike za parsovanje JSON-a. Browser-ska podrška je efikasnija i sigurnija za upotrebu, za razliku od eval() funkcije.

  9. Neusaglašenost • JavaScript sintaksa sadrži nekoliko osnovnih tipova podataka koji nisu uključeni u JSON standardu. • To su DATE, ERROR, MATH, regularni izrazi i funkcije. • Da bi se koristili u JSON-u, moraju se predstaviti u nekom drugom formatu podataka. • Od 2011. postoji nekoliko standarda za konvertovanje između datuma i stringova, ali ni jedan nije univerzalan. • Drugi jezici mogu imati različite skupove osnovnih tipova koji moraju biti pažljivo serijalizovani da bi se bavili ovom vrstom konverzije.

  10. JSON vs. XML {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } } }

  11. IstitekstpredstavljenprekoXML-a: <menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> <menuitem value="Close" onclick="CloseDoc()" /> </popup> </menu>

  12. JSON vs. XML • Primer 2

  13. JSON u Ajax-u • JSON se često koristi u Ajax tehnici. • Sledeći kod prikazuje kako klijent može koristiti XMLHttpRequest da zatraži objekat u JSON-formatu od servera. varmy_JSON_object = {}; varhttp_request = newXMLHttpRequest(); http_request.open("GET", url, true); http_request.onreadystatechange = function (){ var done = 4, ok = 200; if (http_request.readyState == done && http_request.status == ok) { my_JSON_object = JSON.parse(http_request.responseText); } }; http_request.send(null);

  14. U ovomprimeruvidimodaXMLHttpRequestdozvoljavasintaksnevarijacijeza IE, Operu, Safari iMozzilabrowsere. • URL odgovornazahtevmorabiti u istom DNS domenukao server kojihostujestranicukojasadržizahtev. • Alternativno JSONP (JSONP-obrazackojiomogućavastranicidazahtevapodatkeod servera u različitimdomenima) prilazuključujekorišćenjekodiranepovratnefunkcijeprosleđeneizmeđu klijentaiserverakako bi dozvolilaklijentuda učitašifrovan-JSON podataksatreće stranedomenaidaobavestipozivaocafunkcijenakonizvršenja. • Ovo nameće nekebezbednosnerizikeidodatnezahteveza server. Dinamički <script> tagovimogutakođe da se koristezaprenos JSON podataka, alije ova tehnikanesigurna, pa je zbog toga predložen JSONRequestkaosigurnije rešenje.

  15. Sigurnost • Generalno, kada je reč o script jezicima, postoje problemisasigurnošću. • Posto je JSON dizajnirankaopodskupJavaScripta, nasledio je inekenjegovenedostatke. • Ovinedostaci se odnosenadinamičkoizvršenje JSON-a kao JavaScript-a izlažućitako program “lutajućimilizlimskriptama”, kojemogubitipogubne, posebnoprilikomprenosapodatakasa interneta. Rešenjeovogproblema je korišćenjeeval() funkcije.

  16. Pitanja: • Šta je JSON? • Čemu služi JSONP? • Kako se ostvaruje sigurnost kod JSON-a? • Od čega se sastoji JSON tekst?

  17. END

More Related