ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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"
]
}
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
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>
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

More Related Content

Json tutorial

  • 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
  • 3. 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>
  • 4. 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