JSON
JSON, odnosno JavaScript Object Notation, je tekstualno baziran otvoreni standard dizajniran za razumljivu ljudima razmenu podataka. Ona je izvedena iz Javaskript jezika za predstavljanje jednostavnih struktura podataka i asocijativni niz, nazvan objektima. Uprkos vezi sa JavaSkriptom, to je jezički nezavistan, za mnoge jezike. JSON format je prvobitno napravio Daglas Krokford, a opisan je u RFC 4627. Zvanična vrsta internet medija za JSON je JSON format se često koristi za serijalizaciju i prenos strukturiranih podataka preko mrežne veze. Pre svega se koristi za razmenu podataka između servera i veb aplikacije, kao zamena za XML. IstorijaDaglas Krokford je prvi popularizovao JSON format.[1] JSON je korišćen u State Software Inc., kompaniji čiji je suvlasnik Krokford, počev od aprila 2001., i finansiran do strane Tesla Ventures. Kada se šest bivših radnika Communities.com-a osnovali State Software Inc. početkom 2001., oni su se složili da naprave sistem koji će imati standardne pretraživačke sposobnosti i koji će obezbediti apstraktni nivo za veb programere da stvore veb aplikacije koje bi imale stalnu duplu konekciju na veb serveru držeći dve http konekcije otvorene i reciklirajući ih pre standardnog tajm-aut pretraživača ako se podaci više ne razmenjuju. Ideju za State Application Framework je razvio Čip Morningstar iz State Software Inc.[2][3] Korišćen je u projektima Communities.com za Cartoon Network, koji je koristio plug-in sa vlasničkim formatom razmenjivanja poruka zbog manipulacije DHTML elementima (ovaj sistem je takođe u vlasništvu 3DO). Nakon otkrića ranih AJAX sposobnosti, digiGroups, Noosh, i drugih korišćenih okvira za prosleđivanje informacija u polja u korisničkim pretraživačima bez osvežavanja veb aplikacije, realizujući u stvarnom vremenu bogate veb aplikacije koristeći jedino standarde HTTP, HTML i JavaSkript mogućnosti Netscape 4.0.5+ i IE 5+. Daglas Krokford je tada otkrio da JavaSkript može biti korišćen kao objektno zasnovan format za takav sistem. Sistem je prodat Sun Microsystems-u, Amazon.com-u i EDS-u. JSON.org Veb sajt je pokrenut 2002. U decembru 2005, Yahoo! je počeo da nudi nešto od veb servis JSON-u.[4] Google je počeo da nudi JSON-u novosti zaGData veb protokol u decembru 2006.[5] Iako je JSON prvobitno zasnovan na ne-striktnom podskupu javaskript jezika za skriptovanje (konkretno, standard ECMA-262 treće izdanje-decembar 1999.[6]) a najčešće je korišćen sa tim jezikom, to je jezička nezavisnost format. Kod za raščlanjivanje i generisanje JSON podataka je lako dostupan za veliki broj programskih jezika. JSON veb sajt pruža sveobuhvatni spisak postojećih JSON biblioteka, organizovanih jezicima. Tipovi podataka, sintaksa i primerTipovi Java Script podataka su:
Beznačajne beline se mogu slobodno dodati između strukturalnih karaktera (zagrada "{ } [ ]", dve tačke ":" i zareza ","). Sledeći primer pokazuje JSON reprezentaciju objekta koji opisuje osobu. Objekat ima polja ime i prezime predstavljena pomoću niske, broj za godinu, objekat koji prikazuje adresu te osobe i niz objekata sa brojevima telefona. {
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
Jedna potencijalna zamka za slobodnu prirodu JSON-a dolazi od mogućnosti pisanja brojeva kao numeričkih literala ili niske pod navodnicima. Na primer poštanski kod počinje sa nulama (na primer 011 za Beograd). Ako jedan programer piše pod navodnicima a drugi ne, vodeća nula se može izgubiti prilikom razmene ta 2 sistema, kada se traži u okviru istog sistema ili prilikom štampanja.Osim toga poštanski kodovi nisu u svim zemljama brojevi, neke koriste slova. Ovo je tip problema kada se korišćenje JSON šeme (vidi dole) treba umanjiti. Od kada je JSON praktično podskup JavaScript-a, moguće je, ali se ne preporučuje,[7] parsiranje JSON teksta u objekat pozivanjem JavaScript-ove funkcije var p = eval("(" + contact + ")");
Promenljiva Preporučeni nacin je da se koristi JSON parser. Ukoliko klijent apsolutno veruje izvoru teksta ili mora parsirati i prihvatiti tekst koji nije striktno JSON kompatibilan, treba izbegavati
var p = JSON.parse(contact);
ŠemaJSON Šema[9] je specifikacija za formate zasnovane na JSON-u za definisanje strukture JSON podataka. JSON shema pruza garancije za sta su JSON podaci potrebni u datoj aplikaciji i kako se mogu menjati. JSON shema ima za cilj da obezbedi validaciju, dokumentaciju i kontrolu interakcije sa JSON podacima. JSON shema je bazirana na konceptima XML Schema, RelaxNG, and Kwalify, ali je namenjena da se bazira na JSON-u, kako bi se JSON podaci u formi sheme mogli koristiti za validaciju JSON podataka, isti alati za serijalizaciju/deserijalizaciju se mogu koristiti za šemu i podatke i to može biti samoopisujuće. JSON šema je napisana kao Internet nacrt , trenutna verzija 4[10]. Trenutno na raspolaganju postoji nekoliko validatora za različite programske jezike,[11] svaki sa različitim nivoom prilagođavanja. Primer JSON šeme: {
"name": "Product",
"properties": {
"id": {
"type": "number",
"description": "Product identifier",
"required": true
},
"name": {
"type": "string",
"description": "Name of the product",
"required": true
},
"price": {
"type": "number",
"minimum": 0,
"required": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"stock": {
"type": "object",
"properties": {
"warehouse": {
"type": "number"
},
"retail": {
"type": "number"
}
}
}
}
}
JSON šema iznad se može koristiti za testiranje validnosti sledećeg JSON koda: {
"id": 1,
"name": "Foo",
"price": 123,
"tags": [ "Bar", "Eek" ],
"stock": {
"warehouse": 300,
"retail": 20
}
}
Mime verzijaOficijelna MIME verzija za JSON tekst je " JSON-RPCJSON-RPC je RPC protokol izgrađen na JSON, kao zamena za XML-RPC ili SOAP. To je jednostavan protokol koji definiše nekolicinu procesa i komandi. JSON-RPC dopušta notifikacije (informacija poslata do servera koja ne obavezuje odgovor) i za mnogostruke pozive da se pošalju do servera koji ce moći da uzvrati odgovorom na zahtev. --> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
<-- {"jsonrpc": "2.0", "result": 19, "id": 1}
Upotreba u Ajax-uJSON-RPC je obično korišćen u Ajax tehnikama. Ajax je termin za mogućnost da veb strana zahteva da novi podatak, pošto bude učitan u internet pregledač, obično za odgovor na korisničke aktivnosti na prikazanoj veb strani. Kao deo Ajax modela, novi podatak je obično legalizovan u korisničkom sistemu prikazan dinamično i tako ide nazad do servera. Jedan primer ovoga u praksi može biti taj da dok korisnik kuca u pretraživaču, klijentov deo koda šalje ono što je otkucano do tad do servera koji odgovara sa kompletnom listom termina iz njihove baze podataka. Ovo može biti prikazano u padajućoj listi u pretrazi, tako da korisnik može zaustaviti kucanje i selektovati kompletnu i običnu pretragu povezanu direktno. Kada je ovo bilo u originalu opisano u mid-200s, Ajax je obično iskoristio XML kao podatak višestrukog formata, ali mnogi programeri su takođe koristili JSON da povežu Ajax-ove podatke sa serverom i klijentom.[13] Prateći Java skript kod je jedan primer klijenta koji korišćenjem XMLHttpRequest zahteva podatak u JSON formatu od servera. (Serverov deo programiranja je izostavljen, mora biti podešen da odgovori na zahtev na var my_JSON_object = {};
var http_request = new XMLHttpRequest();
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);
Bezbednosna pitanjaIako je JSON namenjen kao podatak serijalizovanog formata, njegov dizajn kao ne-strog podskup JavaSkript jezika poseduje nekoliko bezbednosnih problema. Ovo probleme koji je na usluzi JavaSkripta interpretira JSON tekst dinamicno kao JavaSkript koji izlaže program sa pogrešnim ili zlonamernim skriptama, a često je glavni problem kada se radi o podacima preuzetih sa interneta. Dok nije jedini način da se procesuira JSON, to je jedna laka i popularna tehnika koja proizilazi iz JSON-ove kompatibilnosti sa JavaSkriptovom JavaSkript |
Portal di Ensiklopedia Dunia