Există atât de multe limbaje de programare și fiecare limbaj are propriile sale caracteristici. Dar toate au un lucru în comun: procesează date. De la un calculator simplu la supercomputere, toate funcționează pe date.

La fel se întâmplă și cu oamenii: există atât de multe țări, atât de multe culturi și atât de multe cunoștințe în fiecare comunitate.

Dar pentru a comunica cu alte comunități, oamenii au nevoie de un mediu comun. Limbajul este pentru oameni ceea ce JSON înseamnă programare, un mediu comun de transmitere a datelor.

Ce este JSON?

JSON înseamnă JavaScript Object Notatie. Deci, înainte de a înțelege JSON, să înțelegem obiectele din JavaScript.

Fiecare limbaj de programare are o metodă de stocare a datelor similare împreună. În C, de exemplu, ele sunt numite structuri.

ad-banner

În JavaScript, obiectele sunt o colecție de perechi cheie-valoare, unde valorile pot fi orice variabilă (număr, șir, boolean), un alt obiect sau chiar o funcție. Obiectele sunt foarte utile în programarea orientată pe obiecte.

Programare orientată pe obiecte este o paradigmă de programare bazată pe conceptul de „obiecte”, care poate conține date, sub formă de câmpuri, și cod, sub formă de proceduri.

Să vedem un exemplu.

În JavaScript, obiectele sunt definite folosind aparate dentare, de exemplu:

var obj = {};

Aici, obj este un obiect gol. De asemenea, puteți crea obiecte folosind constructori, de exemplu:

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

console.log(student1.name, student1.roll_number, student1.age);
Obiecte JS folosind constructori

Acest lucru ar da rezultatul Abhishek 123 18.

Acesta este modul în care creați obiecte în JavaScript. Dar aceste obiecte sunt încă variabile care sunt specifice numai JavaScript.

Dacă doriți să exportați aceste obiecte și, de exemplu, să le trimiteți la un server, aveți nevoie de o metodă pentru a le codifica. Să vedem cum se face.

JSON Stringify

Pentru a transmite date de la un dispozitiv la altul și de la o limbă la alta, avem nevoie de o convenție structurată, uniformă și bine definită.

Deși JSON se bazează pe obiecte JS, anumite condiții trebuie să fie valabile. Din fericire, nu trebuie să vă faceți griji cu privire la aceste condiții – deoarece în JavaScript, avem o metodă numită JSON.stringify().

Această metodă este utilizată pentru a converti un obiect JS într-un șir codat care poate fi transmis oriunde fără a pierde date.

Ar putea părea magic că orice obiect poate fi codat într-un șir și trimis oriunde. Să o înțelegem mai în detaliu prin câteva exemple.

Acesta este prototipul metodei stringify:

JSON.stringify(value[, replacer[, space]])

Primul parametru este value care este obiectul pe care doriți să-l strângeți. Al doilea și al treilea parametru sunt opționali și pot fi utilizați dacă doriți să personalizați modul în care va fi codat (de exemplu, separatorul și indentarea).

Să încercăm să strângem exemplul nostru de mai sus.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

console.log(str);

Acest lucru va da rezultatul {"name":"Abhishek","roll_number":"123","age":18}.

Dacă folosim parametrii opționali, adică îl înlocuim JSON.stringify(student1) cu JSON.stringify(student1, null, 2), vom obține așa ceva:

{
  "name": "Abhishek",
  "roll_number": "123",
  "age": 18
}

Puteți să le utilizați pentru a imprima JSON într-un format lizibil. Acum să încercăm încă un exemplu.

Aici vom folosi metode de obiecte. Metodele obiectelor sunt funcții dintr-un obiect care poate fi apelat cu acel obiect, folosind metodele din exemplul nostru de mai sus:

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
  this.print = function() {
    console.log(this.name, this.roll_number, this.age);
  }
}

var student1 = new Student("Abhishek", "123", 18);

student1.print();

Acest lucru va da același rezultat ca primul exemplu, adică Abhishek 123 18.

Metodele obiectelor pot fi utilizate pentru a executa funcții asociate cu un obiect și pentru a utiliza proprietățile obiectului. Să încercăm să strângem acest obiect.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
  this.print = function() {
    console.log(this.name, this.roll_number, this.age);
  }
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

console.log(str);

Vă va oferi în continuare același rezultat,{"name":"Abhishek","roll_number":"123","age":18}.

Astfel, metodele obiect sunt ignorate de funcția stringify. Dacă doriți să fie transmise și ele, trebuie mai întâi să le convertiți într-un șir.

De exemplu, ai putea suna student1.print = student1.print.toString() și apoi strângeți. Atunci ai primi ceva de genul acesta:

{"name":"Abhishek","roll_number":"123","age":18,"print":"function() {n    console.log(this.name, this.roll_number, this.age);n  }"}

Să luăm în considerare un alt obiect:

var obj = {};

obj.key1 = "value1";
obj.key2 = obj;

var str = JSON.stringify(obj);

console.log(obj);

Aceasta va arunca o eroare spunând Uncaught TypeError: Converting circular structure to JSON.

Acest lucru se întâmplă deoarece cheia 2 face trimitere la obiect. Astfel de obiecte sunt cunoscute sub numele de obiecte circulare și nu pot fi convertite într-un șir JSON.

Aici este util cel de-al doilea parametru. Deși nu voi demonstra cum funcționează aici, puteți găsi soluția pe acest Pagina MDN.

Acesta este modul în care codificați JSON. Acum să vedem cum să analizăm un șir JSON.

Analiza JSON

La fel cum JavaScript are o funcție pentru a strânge JSON, avem și o funcție pentru a analiza acel JSON strâns. Aceasta este prototipul funcției:

JSON.parse(text[, reviver])

Aici, primul parametru este șirul JSON care trebuie analizat. Al doilea parametru este opțional și poate fi o funcție pentru a modifica JSON analizat înainte de a reveni. Să demonstrăm această metodă folosind un exemplu.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

var parsedJSON = JSON.parse(str);

console.log(parsedJSON,name. parsedJSON.roll_number, parsedJSON.age);

Iar rezultatul va fi Abhishek 123 18, deci șirul JSON a fost analizat cu succes.

Puteți utiliza acest lucru pentru a trimite date de la client la server. Datele care urmează să fie trimise pot fi codificate JSON la client, iar JSON-ul înșirat va fi analizat la server și procesat. Acest lucru îl face foarte ușor.

JSON poate fi, de asemenea, utilizat pentru a transmite date prin diferite programe scrise în diferite limbi. Toate limbile au biblioteci pentru a strânge și analiza JSON.

JSON vs. XML

XML sau eXtensibil Markup Language este un mod foarte popular de stocare și transmitere a datelor, similar cu JSON. A existat înainte de JSON și este încă utilizat pe scară largă astăzi.

De exemplu, este utilizat în fluxurile RSS, care sunt în continuare cel mai popular mod de abonare la o publicație sau autor. Există, de asemenea, sitemap-uri XML care sunt o listă a tuturor paginilor de pe un site web. Și motoarele de căutare le folosesc pentru a vedea dacă există pagini noi care trebuie accesate cu crawlere.

XML folosește formatul de marcare – similar cu HTML, dar mult mai strict.

JSON și XML au diferite asemănări și diferențe, după cum se explică în următoarele puncte:

  • Ambele sunt lizibile de om
  • Ambele au o structură ierarhică
  • Ambele sunt larg acceptate în diferite limbaje de programare
  • Ambele pot fi preluate de pe server folosind cereri HTTP
  • JSON este mai scurt decât XML
  • JSON poate utiliza tablouri
  • JSON poate fi analizat folosind funcții JavaScript standard, în timp ce XML trebuie analizat folosind XML DOM (care este mai lent)

Aceleași date pot fi exprimate în JSON și XML după cum urmează:

JSON:

{"employees":[
  { "firstName":"Quincy", "lastName":"Larson" },
  { "firstName":"Abigail", "lastName":"Rennemeyer" },
  { "firstName":"Abhishek", "lastName":"Chaudhary" }
]}

XML:

<employees>
  <employee>
    <firstName>Quincy</firstName> <lastName>Larson</lastName>
  </employee>
  <employee>
    <firstName>Abigail</firstName> <lastName>Rennemeyer</lastName>
  </employee>
  <employee>
    <firstName>Abhishek</firstName> <lastName>Chaudhary</lastName>
  </employee>
</employees>

JSON este mai bun decât XML din multe motive, dar asta nu înseamnă că ar trebui să abandonăm XML. Totuși, JSON va deveni în viitor forma preferată de transmitere a datelor.

JWT – Viitorul JSON

JSON Web Token (JWT) este un standard deschis care definește un mod compact și autonom pentru transmiterea în siguranță a informațiilor între părți ca obiect JSON.

Aceste informații pot fi verificate și de încredere deoarece sunt semnate digital. JWT-urile pot fi semnate folosind un secret (cu algoritmul HMAC) sau o pereche de chei publice / private folosind RSA sau ECDSA.

Aceste jetoane pot fi utilizate pentru a semna date JSON și pentru a verifica identitatea expeditorului. Deoarece datele sunt semnate, dacă există date, a fost modificată, veți ști imediat.

Deși nu vom discuta integral despre implementare aici, putem înțelege cum funcționează. Un Token Web JSON este format din trei părți, antetul, sarcina utilă și semnătura.

Antetul constă din tipul de jeton și algoritm utilizat, sarcina utilă constă din date, iar semnătura este valoarea pe care o obțineți atunci când semnați antetul și sarcina utilă împreună.

Jetonul final este sub forma <header>.<payload>.<signature>.

Aceste jetoane sunt utilizate în prezent în autorizare și sunt mai rapide și mai compacte decât alte metode de autorizare. Acestea pot fi foarte utile în viitor, iar potențialul lor este foarte mare.

Concluzie

În acest articol, am văzut importanța JSON ca mijloc de transfer de date între sisteme complet diferite și de ce este atât de convenabil.

JSON este un mediu universal și nu este doar specific JavaScript. JSON este deja utilizat în bazele de date NoSQL pentru a stoca date în format JSON.

De asemenea, am comparat JSON și XML și am văzut de ce JSON este mai eficient și mai rapid decât XML. În viitor, putem dezvolta modalități și mai bune de transmitere a datelor.

Rata la care crește internetul, transferul eficient de date va fi cea mai mare prioritate. Și JSON servește această funcție foarte bine pentru moment.

Puteți încerca lucruri noi cu JSON și puteți implementa diferite structuri de date – este deschis inovației și nu ar trebui să încetăm niciodată să experimentăm.

Sper că ți-a plăcut articolul meu. Am învățat multe scriind-o, iar aprecierea ta mă motivează zilnic. Vizitează-mă acasă pe internet theabbie.github.io.