Despre JSON pe scurt

Ce este JSON – Reprezentarea obiectelor in JavaScript – notația JSON

JSON (JavaScript Object Notation) este un mod de interschimbare a datelor, precum si un format de reprezentare a acestora.
Pe scurt, un format text utilizat pentru reprezentarea obiectelor si a altor structuri, este folosit pentru a schimba date structurate in retea, procesul purtând numele de serializare. JSON este un subset al limbajului JavaScript , fiind utilizat alături de acest limbaj, este nativ, deci nu avem nevoie de alte ‘mijloace externe’ pentru al folosi. Este o alternativa avantajoasa la XML fiind mai compact, neavand nevoie de biblioteci externe pentru manipulare, si pastrand in acelasi timp un inalt grad de ‘human readibility’.

/Pentru a intelege mai bine ce inseamna reprezentarea JSON iata doua implementari ale aceluiasi obiect, sa zicem MASINA in versiune XML si JSON:

<masina>
<marca> Citroen </marca>
<culoare> alb </culoare>
<tractiune> pe spate </tractiune>
<motor> 180CP, DIESEL </motor>
</masina>

În JSON, reprezentarea este următoarea:

{
“marca”: “Citroen”,
“culoare”: “rosie”,
“tractiune”: “pe spate”,
“motor”: “180CP, DIESEL”
}

Si XML si JSON folosesc formatul text, codare Unicode, si permit reprezentarea ‘incuibarita (nested) a datelor, dar este clar ca reprezentarea JSON este mult mai putin redundanta. In plus reprezentarea JSON in Javascript este aproape identica cu notarea unui obiect nativ Javascript ceea ce il face ideal pentru utilizarea impreuna cu acest limbaj.
Popularitatea câștigată într-un timp scurt, datorită avantajelor sale, a făcut să se construiască implementări de analizoare JSON în aproape toate limbajele de programare existente, de la C++, C#, Java. Din acest motiv, JSON a devenit un foarte util instrument de transfer de date între limbaje diferite, cel mai bun exemplu fiind AJAX.
Transmiterea de informații asincron între limbajul de pe server (de regula PHP) și cel de pe partea de client (JAVASCRIPT) este acum mai facilă ca în cazul folosirii XML.
Practic un obiect JSON este un sir descriind o structura de perechi cheie(nume) – valoare. Valorile pot fi stringuri, numere, array-uri, alte obiecte JSON(efectul de incuibarire sau imbricare) complexe. Seamana perfect cu un obiect nativ JAVASCRIPT, nu ? Singura deosebire este in reprezentera interna, practic un obiect JSON este plastic vorbind, reprezentarea pe hartie a unui obiect JAVASCRIPT nativ.

Atentie ! Obiectul JSON este deci un string a carui structura lexicala ( in perechi cheie – valoare ) descrie in “plain text” un obiect JAVASCRIPT nativ care are propria reprezentare interna. Deoarece obiectul JSON exista doar in format text el poate fi transmis usor intr-un mediu client server folosind orice limbaj de programare. Un exemplu clasic este o interogare AJAX a unei baze de date in care pe partea de server limbajul de script (PHP de exemplu) serializeaza raspunsul intr-un obiect JSON, il transmite clientului via AJAX GET request, care client il receptioneaza si il decodifica intr-un obiect JAVASCRIPT.

Conversia de la unul la celalalt se face cu functii native de tipul encode / decode, sau cu arhicunoscuta functie eval(), folosita doar pentru obiectele JSON de provenienta sigura sau cu functii specifice precum JSON.parse() – converteste un obiect JSON (text) in obiect nativ JAVASCRIPT si JSON.strinfy() – invers converteste un obiect JAVASCRIPT intr-un obiect JSON (sir) proces cunoscut si sub numele de serializare. Un alt avantaj JSON în competiția cu XML este viteza. Fiind un format mai simplu, functiile encode / decode native sunt evident mai rapide.
Viteza este deosebit de importantă în aplicațiile AJAX, iar deoarece JSON se pretează foarte bine pentru interschimbarea de date prin XMLHttpRequest, acest format devine din ce în ce mai popular în dezvoltarea aplicațiilor Web 2.0.

This Post Has One Comment

  1. my two cents

    da, bun articolul clarifica lucruri pentru incepatori

Dă-i un răspuns lui my two cents Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.