1. 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"
]
2. }
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 nrt]/.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