- Format za razmjenu podataka; dohvaća podatke s web poslužitelja - Ekstenzija .json Prethodnik JSON-a: - Podaci su se prenosili u XML formatu, ali je on bio detaljan i teško upravljiv u JS - Kako JS ima objekte, uzet je dio tog izraza kao specifikacija za novi format razmjene podataka Prednosti JSON-a: - Podaci u obliku parova ključ-vrijednost i nizova - Ne koristi tagove, nego dvostruke navodnike za ključeve - Parsira se kroz funkciju - Strukturiran kao niz/objekt U usporedbi s XML-om koji:. - Koristi tagove - Strukturiran kao stablo - Parsira se kroz XML parser Ograničenja JSON-a: - Nema sheme, samo 1 tip broja - Nema datuma ni automatske validacije - Nema komentara Sintaksa: XML: <widget> <window title=“Sample“> <width>500</width> </window> </widget> JSON: { “widget“:{ “window“:{ “title“:“Sample“, “width“:500 } }} Podaci se pišu: - U paru “ime“:vrijednost - Odvojeni zarezom - Ime unutar dvostrukih navodnika - Vitičaste zagrade označavaju objekt, a uglate nizove - Uglavnom započinjemo JSON dokument sa [] jer sadrži niz objekata Parsiranje JSON teksta u JS objekt: - var obj = JSON.parse(zaposleni); Tome pristupamo: - obj.employees[1].firstName + “ “ + obj.employees[1].lastName; - Dakle sa točkom (objekt.ime) ili uglatim zagradama (objekt[“ime“]) - Parsiranje uklanja navodnike i razmake JSON struktura vs. JS objekt: - JSON: {“name“:“John“} - JS: {name:“John“} Datum: - Nije dopušten u JSON-u - Upisuje se kao niz, a kasnije se pretvara u objekt datuma - const text = '{“birth“: “1986-12-24“ }' - const obj = JSON.parse(text); - obj.birth = new Date(obj.birth); JSON.stringify: - suprotno od parsiranja; od JS objekta stvara JSON podatak - const obj = {name:“John“,age:31} - const str = JSON.stringify(obj); PHP i JSON: - json_encode() = stringify (pretvara podatak u JSON podatak) - json_decode() = parse (pretvara JSON podatak u PHP podatak) <?php $arr = array(4=>“four“,8=>“eight“); echo json_encode($arr); //Vraća: {“4“:“four“,“8“:“eight“} ?>
Pristup ugniježđenim vrijednostima:
- objekt.osoba.ime - objekt[“osoba“][ “ime“] - objekt.osoba[“ime“] - [] koristimo kada ključ sadrži posebne znakove ili razmake