Json tutorial

4

Click here to load reader

Transcript of Json tutorial

Page 1: Json tutorial

JSON

JSON – JavaScript Object Notation reprezintă un format folosit pentru schimbul de informaţii (într-un mod oareacum similar cu XML, este o notaţie care descrie felul în care sunt încapsulate obiecte precum stringuri, numere, array-uri dupa reguli bine stabilite). Formatul JSON a fost definit în RFC 4627 de Douglas Crockford.

De ce a fost necesară apariţia unei noi notaţii ? Odată cu creşterea popularităţii AJAX şi a serviciilor web, aplicaţiile web au început

să se bazeze din ce în ce mai mult pe Javascript pentru a intermedia transferul de informaţii dintre client şi server precum şi pentru interpretarea răspunsurilor primite de la server. Aceste informaţii puteau fi trimise fie text fie în format XML. XML-ul nefiind un format nativ JavaScript, este nevoie de parsarea acestuia pentru extragerea datelor, însemnând un set de functii in plus şi mărirea timpulului de procesare.

JSON este în schimb perfect compatibil cu JavaScript şi nu necesită parsare pentru a putea fi interpretat. Stringul primit de la server poate fi păstrat în interiorul codului JavaScript al paginii şi nu trebuie decat evaluat (cu functia eval()) si este automat transformat in variabila, nefiind necesara folosirea niciunei librarii externe. Functia eval() executa stringul dat ca parametru ca si cum ar fi cod JavaScript.

Cum se foloseşte această notaţie? Tipurile de date care pot fi reprezentate folosind JSON sunt :

• Number (integer, real, sau float) • String ( Unicode, între “ şi având ca şi caracter de backslash) • Boolean • Array (secvenţă ordonată de valori, separată prin virgule şi inclusă între paranteze

pătrate) • Object ( colecţie de perechi cheie:valoare, separată prin virgule şi inclusă între

accolade) • null

Exemplu de obiect reprezentat folosind JSON – obiectul descrie o persoană , având numele şi prenumele câmpuri de tip string, adresa un alt obiect iar ca număr de telefon un Array de numere de telefon {

"firstName": "John",

"lastName": "Smith",

"address": {

"streetAddress": "21 2nd Street",

"city": "New York",

"state": "NY",

"postalCode": 10021

},

"phoneNumbers": [

"212 555-1234",

"646 555-4567"

]

Page 2: Json tutorial

}

Textul de mai sus poate fi păstrat ca o variabilă de tip string (să zicem cu numele contact).

Deoarece JSON este un subset al notaţiei JavaScript, acest obiect poate fi recreat cu uşurinţă folosind un apel al funcţiei eval().

var p = eval('(' + contact + ')');

Astfeul campurile acestui obiect devin uşor accesibile - p.firstName, p.address.city,

p.phoneNumbers[0].În general eval() ar trebui folosit pentru parsarea JSON doar dacă sursa acestuia este sigură. pPentru a evita problemele de securitate precum code injection se recomandă validarea stringului JSON folosind expresii regulate sau parsere pentru procesare. RFC-ul JSON recomandă folosirea următorului cod pentru a valida JSON înainte de a aplica eval (variabila text reprezintă stringul JSON)

var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(

text.replace(/"(\\.|[^"\\])*"/g, ''))) &&

eval('(' + text + ')');

Cum poate fi folosit JSON în paginile web?

Una din metode este folosirea JSON cu AJAX ca modalitate de încapsulare a datelor primite de la server.

Exemplu

var the_object;//obiectul Javascript in care vom pastra raspunsul JSON

var http_request = new XMLHttpRequest();

http_request.open( "GET", url, true );

http_request.onreadystatechange = function () {

if ( http_request.readyState == 4 ) {

if ( http_request.status == 200 ) {

//populam obiectul cu răspunsul de la server

the_object = eval( "(" + http_request.responseText + ")" );

} else {

alert( "There was a problem with the URL." );

}

http_request = null;

}

};

O altă metoda o reprezintă includerea în pagină a datelor JSON folosind taguri dinamice <script> .

Asemănări între JSON şi XML 1. Formate uşor de citit şi înţeles 2. Notaţii ierarhice 3. Pot fi parsate şi utilizate în combinaţie cu un număr mare de limbaje de programare 4. Pot fi folosite cu AJAX

Exemplu

Page 3: Json tutorial

String cu sintaxa JSON:

{ "numeMagazin" : "SC Gigel impex SRL", "produse" : [ { "nume" : "Tricou", "cantitate" : 2, "pret" : 120 }, { "nume" : "Telefon", "cantitate" : 6, "pret" : 500 }, { "nume" : "Creion", "cantitate" : 10, "pret" : 20 } ], "adresa" : "Strada Primaverii nr. 3" }

O structura echivalenta in XML:

<?xml version='1.0' encoding='UTF-8'?> <numeMagazin>SC Gigel impex SRL</numeMagazin> <produse> <produs> <nume>Tricou</nume> <cantitate>2</cantitate> <pret>120</pret> </produs> <produs> <nume>Telefon</nume> <cantitate>6</cantitate> <pret>500</pret> </produs> <produs> <nume>Creion</nume> <cantitate>10</cantitate> <pret>20</pret> </produs> </produse> <adresa>Strada Primaverii nr. 3</adresa> </xml>

Page 4: Json tutorial

Bibliografie 1. JSON RFC http://www.ietf.org/rfc/rfc4627.txt 2. Limitations of JSON http://blogs.sun.com/bblfish/entry/the_limitations_of_json3 3. JSON for the masses http://www.dustindiaz.com/json-for-the-masses/ 4. Introducere JSON http://www.idevelop.ro/introducere-in-json-javascript-object-notation.htm