Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


JSON skripta JSON skripta JSON skripta , Ispiti od Informatika

JSON skripta JSON skripta JSON skripta JSON skripta JSON skripta

Tipologija: Ispiti

2016/2017

Učitan datuma 13.12.2017.

marko_projovi
marko_projovi 🇸🇷

4.8

(8)

13 dokumenti

1 / 21

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
Univerzitet u Beogradu
Fakultet organizacionih nauka
Laboratorija za elektronsko poslovanje
JSON
-skripta-
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Delimični pregled teksta

Preuzmite JSON skripta JSON skripta JSON skripta i više Ispiti u PDF od Informatika samo na Docsity!

Univerzitet u Beogradu

Fakultet organizacionih nauka

Laboratorija za elektronsko poslovanje

JSON

-skripta-

Sadržaj

  • 1 JSON.....................................................................................................................................................
    • 1.1 Tipovi podataka................................................................................................................. - Primer 1 – JSON objekat..................................................................................................... - Primer 2 – Upotreba nizova u JSON objektu......................................................................
    • 1.2 Validacija JSON dokumenta.............................................................................................
    • 1.3 Parsiranje JSON fajlova....................................................................................................
      • 1.3.1 JavaScript...................................................................................................................
        • Primer 3 – Čitanje JSON objekta koji je sačuvan u varijabli..............................................
        • Primer 4 – Čitanje kompleksnijeg JSON objekta primenom eval() funkcije....................
        • Primer 5 – Čitanje kompleksnijeg JSON objekta primenom JSON.parse() funkcije........
      • 1.3.2 JQuery......................................................................................................................
        • Primer 6 – Parsiranje JSON-a korišćenjem JQuery biblioteke..........................................
        • Primer 7 – JSON, AJAX i JQuery.....................................................................................
      • 1.3.3 PHP..........................................................................................................................
        • Primer 8 – Parsiranje JSON objekta u PHP-u...................................................................
        • Primer 9 – Parsiranje eksternog JSON fajla u PHP-u........................................................
    • 1.4 Generisanje JSON dokumenata (PHP)........................................................................... - Primer 10 – Generisanje JSON fajla korišćenjem PHP-a.................................................. - Primer 11 – Generisanje posebnog JSON fajla korišćenjem PHP-a.................................

dokument se najčešće definiše kao anoniman objekat, stoga počinje znakom “{” i završava se znakom “}”. Kao što je rečeno, u JSON-u se promenljive definišu kao vrednosti (values). Sledi primer definisanja nove vrednosti: "naziv_promenljive": vrednost_promenljive Moguće vrednosti podataka u JSON-u šematski su prikazane na slici 1.

Slika SEQ Slika * ARABIC 1 – Definisanje vrednosti Ukoliko je potrebno definisati promenljivu (vrednost) ime , tipa string, čija je vrednost Petar , to se radi na sledeći način: "ime": "Petar" Dakle, „Petar“ predstavlja primer string-a. String je niz unicode karaktera. Moguće vrednosti karaktera u definisanom stringu prikazane su na slici 2.

Slika SEQ Slika * ARABIC 2 – Moguće vrednosti karaktera u string-u Vrednost tipa broj se definiše na sledeći način: "broj": 5 Brojevi se definišu bez navodnika. JSON ne prepoznaje oktalni i heksadecimalni sistem brojeva. Moguće vrednosti brojeva prikazane su na slici:

student: { ime: "Petar", prezime: "Petrovic" } }

Navedeni zapis ekvivalentan je XML zapisu:

Petar Petar

Prilikom kreiranja JSON fajlova, dobra je praksa kreirati jedan JSON objekat, u kome se nalaze ostali podaci. Taj objekat je analogan XML korenom elementu (kao što je prikazano u primeru 1). Prilikom čitanja većeg broja podataka iz baze, pogodno je koristiti strukturu niza. Na primer, u slučaju reprezentacije većeg broja studenata, moguće je koristiti sledeću JSON strukturu:

Primer 2 – Upotreba nizova u JSON objektu

"studenti":[ {"id":"1","ime":"Petar","prezime":"Petrović","indeks":"123/12"}, {"id":"2","ime":"Pera","prezime":"Perić","indeks":"10/12"}, {"id":"3","ime":"Laza","prezime":"Lazić","indeks":"345/12"}, {"id":"4","ime":"Mika","prezime":"Mikić","indeks":"456/12"}, {"id":"5","ime":"Žika","prezime":"Žikić","indeks":"567/12"}, {"id":"6","ime":"Pavle","prezime":"Pavlović","indeks":"54/12"} ] }

Validacija JSON dokumenta

Da bi JSON dokument bio validan, neophodno je da nijedan element glavnog JSON objekta ne bude anoniman, odnosno da unutar glavnog JSON objekta ne postoji nijedna vrednost bez deklarisanog naziva promenljive. Na primer, sledeći JSON objekat nije validan: { [ {"ime":"Petar","prezime":"Petrović"}, {"ime":"Mika","prezime":"Mikić"}, {"ime":"Žika","prezime":"Žikić"} ] } Ali, sledeći JSON objekat jeste validan: { "studenti":[ {"ime":"Petar","prezime":"Petrović"}, {"ime":"Mika","prezime":"Mikić"}, {"ime":"Žika","prezime":"Žikić"} ] } Na Internetu postoji nekoliko različitih alata koji proveravaju validnost JSON dokumenta. Neki od njih su:

  • http://jsonformatter.curiousconcept.com
  • http://jsonlint.com
  • http://www.freeformatter.com/json-validator.html

Kod parsiranja kompleksijih JSON podataka, koristi se JavaScript funkcija eval(). Ova funkcija brzo parsira podatke i podržava veliki broj browser-a. Međutim, postoji sigurnosni rizik vezan za izvršavanje skriptova. Naime, ako JSON varijabla sadrži u sebi neki skript, on će se izvršiti. Sledi primer parsiranja kompleksnijeg JSON objekta, u kome se nalazi niz studenata, nazvan studenti:

Primer 4 – Čitanje kompleksnijeg JSON objekta primenom eval() funkcije

primer.html

Zbog navedenog sigurnosnog rizika, eval() funkcija se koristi samo u slučaju ako je bitna kompatibilnost. Znatno sigurnije je korišćenje JSON.parse() funkcije, ali je njen nedostatak nedovoljna kompatibilnost, koja će se ispraviti prilikom definisanja sledeće verzije JavaScript standarda. Kod korišćenja JSON.parse () funkcije, bitno je da je JSON definisan kao string promenljiva. U sledećem primeru biće prikazano parsiranje iste JSON varijable korišćenjem JSON.parse() funkcije:

Primer 5 – Čitanje kompleksnijeg JSON objekta primenom JSON.parse() funkcije

primer.html

Primer 7 – JSON, AJAX i JQuery

fajl.json

"student": { "ime": "Petar", "prezime": "Petrović" } }

primer.html

Ime Prezime Indeks

studenti as $vrednost){ ?>

id;?> ime;?> prezime;?> indeks;?>

Ukoliko se JSON nalazi u posebnom, eksternom fajlu, taj fajl se može učitati korišćenjem funkcije file_get_contents(), čiji je jedini parametar naziv eksternog JSON fajla.

Primer 9 – Parsiranje eksternog JSON fajla u PHP-u

primer.json

"studenti":[ {"id":"1","ime":"Petar","prezime":"Petrović","indeks":"123/12"}, {"id":"2","ime":"Pera","prezime":"Perić","indeks":"10/12"}, {"id":"3","ime":"Laza","prezime":"Lazić","indeks":"345/12"}, {"id":"4","ime":"Mika","prezime":"Mikić","indeks":"456/12"},

{"id":"5","ime":"Žika","prezime":"Žikić","indeks":"567/12"}, {"id":"6","ime":"Pavle","prezime":"Pavlović","indeks":"54/12"} ] }

primer.php

ITEH

ID Ime Prezime Indeks

studenti as $vrednost){ ?>

id;?>

Generisanje JSON dokumenata (PHP)

Kao što je ranije napomenuto, JSON zbog svoje „laganosti“ predstavlja dobar format za prenos podataka putem Interneta i često se koristi kod veb servisa. JSON fajlovi se često generišu na osnovu podataka iz baze podataka i jedan JSON fajl se može koristiti za prikaz podataka na različitim uređajima. Samim tim, ista baza podataka se može koristiti za veb aplikaciju, desktop aplikaciju i mobilne aplikacije za različite platforme.

JSON fajlovi se najčešće generišu na serverskoj strani. U programskom jeziku PHP koristi se funkcija json_encode(), koja prima kao parametar jedan PHP objekat ili asocijativni niz, a vraća JSON objekat. Da bi se definisalo da PHP fajl vraća JSON, dobra praksa je slanje HTTP header-a koji sadrži MIME TYPE generisanog dokumenta. Ukoliko se generiše JSON, trebalo bi da se pošalje sledeći header na početku PHP koda: header("Content-type: application/json"); Ovaj header nedvosmisleno govori veb klijentu da je u pitanju JSON dokument. Da bi se u PHP-u uspešno generisao validan JSON, potrebno je na početku i kraju dokumenta otvoriti i zatvoriti vitičaste zagrade {}, kako bi se definisao jedan JSON objekat. Zatim se definiše varijable i definišu se njihove vrednosti. U sledećem primeru prikazano je generisanje jednog JSON fajla, na osnovu PHP niza, čiji su elementi PHP objekti.

Primer 10 – Generisanje JSON fajla korišćenjem PHP-a

primer.php

ime = $ime; $this->prezime = $prezime; } }?>{"studenti":php $s1 = new student ("Petar","Petrovic"); $s2 = new student ("Pera", "Peric");

$s3 = new student ("Zika", "Zikic"); $niz_studenata = array ($s1, $s2, $s3); $json_studenti = json_encode ($niz_studenata); echo ($json_studenti); ?>}

Generisanje JSON fajla na osnovu podataka iz baze vrši se na slični način, s tim da redovi koji se izvlače iz baze prolaze kroz json_encode() funkciju. Primeri generisanja JSON fajlova na osnovu podataka iz baze dati su u Praktikumu. Postoji i drugi način generisanja JSON fajlova, gde se JSON generiše kao poseban fajl.

Primer 11 – Generisanje posebnog JSON fajla korišćenjem PHP-a

primer.php

ime = $ime; $this->prezime = $prezime; } }

$json_podaci = "{"studenti":"; $s1 = new student ("Petar","Petrovic");

$s2 = new student ("Pera", "Peric"); $s3 = new student ("Zika", "Zikic");

$niz_studenata = array ($s1, $s2, $s3); $json_podaci .= json_encode ($niz_studenata);