Variabilele, matricele și obiectele sunt o formă familiară și convenabilă de reprezentare a datelor. Se obișnuiește să descrie datele în limbajul browserului JavaScript, care nu este necesar în limbajul serverului PHP. Formatul JSON vă permite să le rezumați într-un întreg și să nu vă concentrați pe limbajul de programare. În acest caz, datele se transformă în perechi: „nume = valoare”. Valoarea în fiecare dintre ele poate fi și o colecție de astfel de perechi.

Se obișnuiește să se asocieze JSON cu acolade și acesta din urmă este destul de justificat, deoarece formatul JSON = JavaScript Object Notation. S-au schimbat multe în ultimii ani deosebit de dinamici. Ceea ce a fost creat cu un anumit scop a adus adesea rezultate neașteptate sau a deschis noi orizonturi.

Schimb de date: browser - server

Tehnologia AJAX a devenit tradițională, reîmprospătarea obișnuită a paginii în întregime a încetat să fie popular. Un vizitator, deschizând un site, inițiază o serie de schimburi parțiale de date, atunci când anumite pagini se schimbă doar în locul care este relevant.

Se crede că apariția JSON este asociată cu utilizarea AJAX, dar, de fapt, asociația și notația obiectului acesteia (caracteristicile sintaxei pentru descrierea și utilizarea obiectelor) au o relație mult mai legată de JSON decât schimbul de date între browser-ul și serverul.

Deoarece conținutul paginilor site-urilor moderne a devenit cu adevărat „masiv” (volum), eficiența formatului pentru schimbul de date a căpătat o importanță deosebită. Acest lucru nu înseamnă că JSON a devenit o nouă reprezentare a datelor, dar faptul că a fost mult timp un element al sintaxei JavaScript este semnificativ.

Utilizarea chirilicului în denumirea variabilelor este un fenomen foarte neașteptat (prostii), dar funcționează în cele mai recente versiuni de Chrome, Firefox și chiar Internet Explorer 11.

Chirilic și JSON

Desigur, nu are rost să folosim acest fenomen complet neașteptat, amintindu-ne cât de ușor se transformă în farfurie valorile variabilelor scrise cu litere rusești: ce putem spune despre nume, în special despre cele externe.

Este îndoielnic că inițiativa în nume chirilice va fi susținută de mediul extern al browser-ului, cu care are de-a face constant. Dar acest fapt merită atenție pentru simplul motiv că formatul JSON este capacitatea de a scrie nume și valori așa cum dorește dezvoltatorul. Acest lucru este important, deoarece în fiecare sarcină descrierea zonei de aplicație, așa cum o necesită, simplifică semnificativ depanarea și reduce numărul de erori.

Nu contează care a fost exact baza inovației sintactice - JSON -, este important că a dat dreptul legal și oportunitatea reală de a stabili corespondența: „orice nume = orice valoare”.

Trebuie să aducem un omagiu limbajului JavaScript: ceea ce este furnizat de sintaxă nu obligă dezvoltatorul și nu-i impune nimic. Dezvoltatorul folosește în mod liber sintaxa limbajului pentru a forma în mod optim un model de date și un algoritm pentru utilizarea lor.

PHP și JSON

Acceptând date în format JSON, serverul (prin PHP, în special) oferă posibilitatea de a le procesa ca atare și de a returna rezultatul înapoi în browser într-un format similar. Matrice sursă PHP:

  • $cJSON = matrice ("a" => "alfa", "b" => "beta", "g" => "gamma").

Convertiți în JSON pentru livrare în browser:

  • $cJS = json_encode($cJSON).

Rezultat:

  • ("a":"alfa","b":"beta","g":"gamma").

Cuibarea prezentată în fotografie este permisă.

Aici matricea generată a fost adăugată cu un nou element „în sine” cu indexul automat „0”, apoi din nou cu indexul specificat „z”.

Json_decode() convertește un șir JSON într-o matrice PHP. Rezultate similare pot fi obținute prin manipularea funcțiilor și explode(). În unele cazuri, această opțiune este de preferat.

Nivel de cuibărire

Elementele pot fi imbricate atât pe partea browserului, cât și pe partea serverului. În practică, formatul JSON (descriere standard RFC 4627) oferă mult mai mult de 4 niveluri de imbricare, dar această caracteristică nu trebuie abuzată.

Cel mai bine este să nu depășiți niciodată o suficiență rezonabilă; acest lucru face codul ușor de citit, făcându-l mai ușor de depanat și de înțeles pentru alți dezvoltatori.

JSON este denumit în mod obișnuit structuri de date care sunt mai simple decât XML și ușor de înțeles atât pentru oameni, cât și pentru computere. Acest lucru este valabil atunci când cantitatea de date este mică și dezvoltatorul a ales cu înțelepciune nivelul de imbricare. În toate celelalte cazuri, numărarea numărului de paranteze și înțelegerea este dificilă atât din partea browserului, cât și pe partea serverului.

fișiere JSON

Utilizarea JSON în practică nu este adesea limitată la un șir scurt care poate fi citit de om. Orice construcție de date este întotdeauna pragmatică. În același timp, JSON poate fi utilizat în mod eficient atât în ​​datele de sarcini reale (personalul întreprinderii), cât și pentru implementarea datelor temporare (cache-ul obiectelor).

Personalul companiei și formatul JSON: exemplu

De obicei, o înregistrare despre o persoană este un nume de familie, prenume, patronim, anul de naștere, specialitate, educație, ... și alte câteva valori simple. Chiar și în companiile deosebit de solicitante, un record despre o persoană nu va depăși o duzină sau două domenii. Acest lucru este perceptibil și poate fi plasat într-un șir de bază de date.

Dacă o companie angajează mai mulți oameni, acesta este un lucru, dar dacă sunt zeci de mii, acest lucru este complet diferit. Puteți continua să utilizați baza de date, dar stocarea acesteia ca fișier pare mai practică și mai accesibilă de utilizat.

JSON este un fișier text simplu. Cazul cu masa de personal este de la sine înțeles. Îl poți citi oricând. Deschiderea și editarea sunt disponibile și în orice editor de text care nu are obiceiul de a adăuga propriile informații de serviciu la conținutul fișierului. În general, *.json este text pur atât în ​​interiorul browserului, cât și în interiorul fișierului - un șir.

Fotografia arată memoria cache a obiectului care formează imaginea, un exemplu.

Acesta este un exemplu de conținut al unui fișier generat de un site care oferă imprimare 3D color pe căni și ceramică. Desigur, având un astfel de format JSON, a decide cum să-l deschideți este cu adevărat problematic. Cu toate acestea, în acest caz și în cazuri similare nu există probleme cu citirea fișierului: PHP citește fișierul, îl analizează și îl transmite browserului. Datele modificate de vizitator sunt returnate serverului și scrise înapoi.

În acest caz de utilizare, fișierul acționează ca o variabilă care este stocată în afara codului. Dacă este necesar, variabila primește o valoare din fișier, iar dacă este modificată de către vizitator în dialogul oferit de site, atunci toate modificările vor fi înregistrate așa cum sunt. Nu este nevoie să citiți și să verificați conținutul fișierului.

JSON este adesea folosit pentru a stoca și a utiliza informații de serviciu - acesta nu este un tabel de personal și nici dezvoltatorul, nici vizitatorul site-ului nu trebuie să îl vadă.

XML și JSON

„Există un timp pentru toate” este o cunoaștere clasică acceptată ca axiomă chiar înainte de apariția programării. „Nu apare nimic” - acest lucru s-a întâmplat și înainte ca omul să scrie primul program inteligibil într-un limbaj artificial.

Formatele de date provin din nevoi reale și se bazează pe cunoștințele dobândite. HTML are propria cale, XML are propria cale, iar JSON este logica obiect JavaScript extinsă la alte limbi. A compara unul cu altul nu este cel mai bun lucru de făcut. Fiecare a lui.

XML se descurcă de minune sarcinilor sale și în mod clar nu va deveni istorie. Și JSON a fost folosit până în 2006; doar că nu toți dezvoltatorii au considerat că este de datoria lui să declare anumite opțiuni pentru reprezentarea datelor lor.

Au existat cazuri în practică în care au fost scrise programe în BASIC care nu foloseau JSON ca atare, ci au stocat perfect perechi „nume = valoare” și le-au pus la dispoziție pentru algoritmii potriviți la momentul potrivit.

Caractere speciale (“`”, “~”, “|”, ...) și formate de date

Obiceiul de a lucra cu tablouri și obiecte asociative în JavaScript face ca utilizarea JSON să fie naturală și convenabilă. Acesta este un format cu adevărat grozav, dar abilitatea de a separa și uni, manipulând șiruri și matrice, are rădăcini mult mai profunde.

Funcțiile de îmbinare/split ale limbajului JavaScript și implozie/explodare ale limbajului PHP vă permit să utilizați convenabil și eficient atât formatele de date XML, JSON, cât și propria dvs. versiune. Acesta din urmă este adesea optim, în timp ce primele două sunt ideale pentru opțiuni de utilizare generală. Dacă informațiile sunt transferate către un alt dezvoltator, server, fișier sau bază de date, nu există o modalitate mai bună de a găsi XML și JSON. Toată lumea lucrează cu ei, așa că transmiterea/recepția informațiilor nu necesită comentarii.

Folosind JSON în Android

Citirea și scrierea datelor în format JSON în Android nu este doar norma, dar există și multe obiecte axate pe lucrul cu acest format de date special.

În acest caz, se folosește formatul JSON. Acest lucru poate fi adevărat, dar întrebarea nu este fenomenalitatea rețelelor sociale, ci faptul că prezentarea informațiilor în formatul „nume = valoare” este cu adevărat convenabilă atât pentru programare, cât și pentru utilizare. Spre deosebire de „XML” strict și complex, acesta este cu adevărat un format prietenos cu oamenii.

Matrice asociative

Se întâmplă ca variabilele să fie descrise (JavaScript) sau să fie specificată măcar o valoare inițială (PHP). În ambele cazuri, variabila își poate schimba tipul foarte ușor. Limba efectuează această conversie automat dacă este necesar.

Dar de ce nu ar trebui variabila să-și schimbe și numele, să apară în timpul execuției algoritmului și să dispară atunci când nu mai este necesară? Matricele asociative rezolvă această problemă, dar atunci când se folosesc astfel de variabile relativ dinamice, numele matricei și constructele sintactice corespunzătoare vor urma acolo unde sunt utilizate.

Această împrejurare este mai ales pronunțată în PHP, dar o puteți suporta, ca, într-adevăr, cu simbolul „$” din numele variabilei și combinația „$this->” din interiorul obiectului. Programând în JavaScript și PHP în același timp, la început ești cu adevărat uimit de cât de diferit este totul, dar apoi totul devine atât de familiar și natural...

Matrice asociativă -> JSON

În acest exemplu, un document *.docx este creat folosind biblioteca PHPOffice/PHPWord, iar matricea aProperties conține proprietățile acestui document (autor, companie, titlu, categorie, data creării...).

A doua matrice conține date pentru pagină:

  • orientare (peisaj sau normal);
  • dimensiuni verticale și orizontale;
  • indentări (margini stânga, sus, jos, dreapta);
  • anteturi și subsoluri.

Documentul este generat pe serverul unde este instalată biblioteca PHPOffice/PHPWord. Site-ul vă permite să gestionați valorile acestor matrice folosind JavaScript. Rezultatul în format JSON este returnat înapoi la server și folosit în algoritmi PHP, în constructele sale, adică în matrice.

Variabile dinamice

Formatul JSON rezolvă problema variabilelor dinamice. Aici puteți crea, modifica și șterge variabile fără dezordine sintactică inutilă. Arată bine și este folosit în JavaScript.

În acest exemplu, funcția GetOjInfo() preia numele și valoarea valorii dintr-un obiect. Inițial, obiectul șir JSON alocat variabilei ojInfo are trei elemente: Nume, vârstă și muncă. Puțin mai târziu este adăugată variabila Status.

După primul operator de ștergere, linia ojInfo pierde elementul age, după a doua ștergere pierde elementul de lucru. Dacă presupunem că acest șir este o selecție de variabile care au o anumită semnificație, atunci folosind JSON puteți de fapt să creați, să modificați și să ștergeți orice seturi ale acestora în afara câmpului operațional (sintaxa) de descriere și procesare a limbajului JavaScript.

Formatul JSON nu a fost conceput pentru această opțiune, dar este posibil, practic și convenabil.

Cu siguranță ați auzit vreodată de JSON. Ce este? Ce poate face și cum să-l folosească?

În acest tutorial vom acoperi elementele de bază ale JSON și vom acoperi următoarele puncte:

  • Ce este JSON?
  • Pentru ce este folosit JSON?
  • Cum se creează un șir JSON?
  • Un exemplu simplu de șir JSON.
  • Să comparăm JSON și XML.
  • Cum se lucrează cu JSON în JavaScript și PHP?
Ce este JSON?

JSON este o modalitate simplă, bazată pe text, de a stoca și transmite date structurate. Cu o sintaxă simplă, puteți stoca cu ușurință orice, de la un singur număr la șiruri, matrice și obiecte în text simplu. De asemenea, puteți lega matrice și obiecte împreună pentru a crea structuri complexe de date.

Odată creat șirul JSON, este ușor să îl trimiteți către o altă aplicație sau către o altă locație din rețea deoarece este text simplu.

JSON are următoarele avantaje:

  • Este compact.
  • Propozițiile sale sunt ușor de citit și compus atât de oameni, cât și de computere.
  • Poate fi convertit cu ușurință într-o structură de date pentru majoritatea limbajelor de programare (numere, șiruri de caractere, booleeni, matrice etc.)
  • Multe limbaje de programare au funcții și biblioteci pentru citirea și crearea structurilor JSON.

Numele JSON înseamnă JavaScript Object Notation. După cum sugerează și numele, se bazează pe o modalitate de definire a obiectelor (cum ar fi crearea de tablouri asociative în alte limbi) și tablouri.

Pentru ce este folosit JSON?

Cea mai obișnuită utilizare a JSON este trimiterea datelor de la server la browser. De obicei, datele JSON sunt furnizate folosind AJAX, ceea ce permite browserului și serverului să comunice fără a fi nevoie să reîncărcați pagina.

  • Utilizatorul face clic pe o miniatură a unui produs dintr-un magazin online.
  • JavaScript care rulează pe browser generează o solicitare AJAX către scriptul PHP care rulează pe server, pasând ID-ul produsului selectat.
  • Scriptul PHP primește numele produsului, descrierea, prețul și alte informații din baza de date. Apoi compune un șir JSON din date și îl trimite în browser.
  • JavaScript care rulează în browser primește șirul JSON, îl decodifică și afișează informațiile despre produs pe pagină pentru utilizator.
  • De asemenea, puteți utiliza JSON pentru a trimite date din browser către server, trecând un șir JSON ca parametru la solicitările GET sau POST. Dar această metodă este mai puțin comună, deoarece transferul de date prin solicitări AJAX poate fi simplificat. De exemplu, ID-ul produsului poate fi inclus în adresa URL ca parte a unei solicitări GET.

    Biblioteca jQuery are mai multe metode, cum ar fi getJSON() și parseJSON(), care facilitează recuperarea datelor folosind JSON prin solicitări AJAX.

    Cum se creează un șir JSON?

    Există câteva reguli de bază pentru crearea unui șir JSON:

    • Șirul JSON conține fie o matrice de valori, fie un obiect (o matrice asociativă de perechi nume/valoare).
    • Matrice este cuprins între paranteze drepte ([ și ]) și conține o listă de valori separate prin virgulă.
    • Un obiect este cuprins între acolade (( și )) și conține o listă de perechi nume/valoare, separate prin virgulă.
    • pereche nume/valoare constă din numele câmpului cuprins între ghilimele duble, urmat de două puncte (:) și valoarea câmpului.
    • Sensîntr-o matrice sau obiect poate exista:
      • Număr (întreg sau virgulă mobilă)
      • Șir (între ghilimele duble)
      • Valoare booleană (adevărat sau fals)
      • O altă matrice (închisă între paranteze drepte)
      • Un alt obiect (închis între acolade)
      • valoare nulă

    Pentru a include ghilimele duble într-un șir, trebuie să utilizați o bară oblică inversă: \" . Ca și în cazul multor limbaje de programare, puteți pune caractere de control și coduri hexadecimale într-un șir precedându-le cu o bară oblică inversă. Pentru detalii, consultați site-ul web JSON.

    Exemplu simplu de șir JSON

    Mai jos este un exemplu de comandă în format JSON:

    ( „comanda comandă”: 12345, „nume cumpărător”: „Vanya Ivanov”, „e-mail cumpărător”: „ [email protected]„, „conținut”: [ ( „productID”: 34, „productName”: „Super produs”, „cantitate”: 1 ), ( „productID”: 56, „productName”: „Produs miraculos”, „cantitate”: 3 ) ], „comandă finalizată”: adevărat )

    Să ne uităm la linie în detaliu:

    • Creăm un obiect folosind acolade (( și )).
    • Obiectul are mai multe perechi nume/valoare: „orderID”: 12345 O proprietate cu numele „orderId” și o valoare întreagă 12345 „shopperName”: „Vanya Ivanov” o proprietate cu numele „shopperName” și valoarea șirului „Vanya Ivanov”. " "shopperEmail": " [email protected]„ O proprietate numită „shopperEmail” cu o valoare șir „ [email protected]" "contents": [ ... ] O proprietate numită "contents" a cărei valoare este o matrice "orderCompleted": true O proprietate numită "orderCompleted" și valoarea booleană true
    • Există 2 obiecte în matricea „conținut” reprezentând articole individuale din ordine. Fiecare obiect conține 3 proprietăți: productID , productName și cantitate .

    Apropo, deoarece JSON se bazează pe declararea obiectelor JavaScript, puteți face rapid și ușor șirul JSON de mai sus un obiect JavaScript:

    var coș = ( "comanda comandă": 12345, "numele cumpărătorului": "Vanya Ivanov", "shopperEmail": " [email protected]„, „conținut”: [ ( „productID”: 34, „productName”: „Super produs”, „cantitate”: 1 ), ( „productID”: 56, „productName”: „Produs miraculos”, „cantitate”: 3 ) ], „comandaCompleted”: adevărat );

    Comparație între JSON și XML

    În multe feluri, vă puteți gândi la JSON ca o alternativă la XML, cel puțin în spațiul aplicației web. Conceptul de AJAX sa bazat inițial pe utilizarea XML pentru a transfera date între server și browser. Dar în ultimii ani, JSON a devenit din ce în ce mai popular pentru transportul datelor AJAX.

    În timp ce XML este o tehnologie dovedită care este utilizată într-un număr destul de mare de aplicații, JSON are avantajul de a fi un format de date mai compact și mai ușor de recunoscut.

    Iată cum ar arăta obiectul exemplu de mai sus în XML:

    ID comandă 12345 Nume cumpărător Vanya Ivanov E-mail cumpărător [email protected] continut productID 34 productName Super produs cantitate 1 produs ID 56 productName Miracle produs cantitate 3 comanda Completat adevarat

    Versiunea XML este semnificativ mai mare. În realitate, are 1128 de caractere, în timp ce versiunea JSON are doar 323 de caractere. Versiunea XML este, de asemenea, destul de greu de înțeles.

    Desigur, acesta este un exemplu radical. Și este posibil să creați o înregistrare XML mai compactă. Dar chiar și va fi semnificativ mai lung decât echivalentul JSON.

    Lucrul cu un șir JSON în JavaScript

    JSON are un format simplu, dar crearea manuală a unui șir JSON este destul de obositoare. În plus, adesea trebuie să luați un șir JSON, să convertiți conținutul acestuia într-o variabilă care poate fi folosită în cod.

    Majoritatea limbajelor de programare au instrumente pentru a converti cu ușurință variabilele în șiruri JSON și invers.

    Crearea unui șir JSON dintr-o variabilă

    JavaScript are o metodă JSON.stringify() încorporată care preia o variabilă și returnează un șir JSON reprezentând conținutul acesteia. De exemplu, să creăm un obiect JavaScript care conține informațiile despre comandă din exemplul nostru și apoi să creăm un șir JSON din acesta:

    var coș = ( "comanda comandă": 12345, "numele cumpărătorului": "Vanya Ivanov", "shopperEmail": " [email protected]„, „conținut”: [ ( „productID”: 34, „productName”: „Super produs”, „cantity”: 1 ), ( „productID”: 56, „productName”: „Produs miraculos”, „cantity”: 3 ) ], „orderCompleted”: true ); alertă (JSON.stringify(cart));

    Acest cod va produce:

    Rețineți că metoda JSON.stringify() returnează un șir JSON fără spații. Este mai greu de citit, dar este mai compact pentru transmiterea prin rețea.

    Există mai multe modalități de a analiza un șir JSON în JavaScript, dar cel mai sigur și mai de încredere este să utilizați metoda încorporată JSON.parse(). Primește un șir JSON și returnează un obiect sau o matrice JavaScript care conține datele. De exemplu:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [email protected]", \ "conținut": [ \ ( \ "productID": 34, \ "productName": "Super produs", \ "cantitate": 1 \), \ ( \ "productID": 56, \ "productName": „Mărfuri miraculoase”, \”cantitate”: 3\ ) \ ], \”comandă finalizată”: adevărat \ ) \”; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);

    Am creat o variabilă jsonString care conține șirul JSON al ordinii noastre exemplu. Apoi trecem acest șir la metoda JSON.parse(), care creează un obiect care conține datele JSON și îl stochează în variabila cart. Tot ce rămâne este să verificați prin afișarea proprietăților obiectului shopperEmail și productName al matricei de conținut.

    Ca rezultat, vom obține următorul rezultat:

    Într-o aplicație reală, codul JavaScript va primi comanda ca șir JSON într-un răspuns AJAX de la scriptul serverului, va transmite șirul la metoda JSON.parse() și apoi va folosi datele pentru a le afișa pe pagina utilizatorului.

    JSON.stringify() și JSON.parse() au alte capabilități, cum ar fi utilizarea funcțiilor de apel invers pentru a converti anumite date personalizate. Astfel de opțiuni sunt foarte utile pentru a converti diferite date în obiecte JavaScript adecvate.

    Lucrul cu un șir JSON în PHP

    PHP, ca și JavaScript, are funcții încorporate pentru lucrul cu șiruri JSON.

    Crearea unui șir JSON dintr-o variabilă PHP

    Funcția json_encode() preia o variabilă PHP și returnează un șir JSON reprezentând conținutul variabilei. Iată exemplul nostru de comandă, scris în PHP:

    Acest cod returnează exact același șir JSON ca în exemplul JavaScript:

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [email protected]","contents":[("productID":34,"productName":"Super produs","cantitate":1),("productID":56,"productName":"Produs miraculos","cantitate": 3)],"orderCompleted":true)

    Într-o aplicație reală, scriptul dvs. PHP va trimite acest șir JSON ca parte a unui răspuns AJAX către browser, unde codul JavaScript, folosind metoda JSON.parse(), îl va analiza înapoi într-o variabilă pentru afișare pe pagina utilizatorului .

    Puteți trece diferite steaguri ca al doilea argument funcției json_encode(). Cu ajutorul lor, puteți schimba principiile de codificare a conținutului variabilelor într-un șir JSON.

    Creați o variabilă dintr-un șir JSON

    Pentru a converti un șir JSON într-o variabilă PHP, utilizați metoda json_decode(). Să înlocuim exemplul nostru pentru JavaScript cu metoda JSON.parse() cu cod PHP:

    Ca și în cazul JavaScript, acest cod va produce:

    [email protected] Produs miraculos

    În mod implicit, funcția json_decode() returnează obiecte JSON ca obiecte PHP. Există obiecte PHP generice din clasa stdClass. De aceea folosim -> pentru a accesa proprietățile obiectului din exemplul de mai sus.

    Dacă aveți nevoie de un obiect JSON ca matrice PHP asociată, trebuie să transmiteți true ca al doilea argument funcției json_decode(). De exemplu:

    $cart = json_decode($jsonString, adevărat); echo $cart["shopperEmail"] . "
    "; echo $cart["conținut"]["productName"] . "
    ";

    Acest cod va produce aceeași ieșire:

    [email protected] Produs miraculos

    De asemenea, puteți transmite alte argumente funcției json_decode() pentru a specifica adâncimea recursiunii și cum să gestionați numerele întregi mari.

    Concluzie

    Deși JSON este ușor de înțeles și de utilizat, este un instrument foarte util și flexibil pentru transferul de date între aplicații și computere, mai ales când se utilizează AJAX. Dacă intenționați să dezvoltați o aplicație AJAX, atunci nu există nicio îndoială că JSON va deveni un instrument esențial în atelierul dvs.

    ), și între serverele în sine (interfețe software HTTP). Formatul JSON este, de asemenea, potrivit pentru stocarea structurilor dinamice complexe în baze de date relaționale sau cache de fișiere.

    Deoarece JSON este un subset al sintaxei JavaScript, poate fi deserializat rapid folosind funcția încorporată eval(). În plus, este posibil să inserați funcții JavaScript complet funcționale. În PHP, începând cu versiunea 5.2.0, suportul JSON este inclus în nucleu sub forma funcțiilor json_decode() și json_encode(), care convertesc ele însele tipurile de date JSON în tipurile PHP corespunzătoare și invers.

    Sintaxă

    JSON este construit pe două structuri:

    • Un set de perechi cheie/valoare. În diferite limbi, acest lucru este implementat ca un obiect, înregistrare , structură , dicționar , tabel hash , listă cu chei sau matrice asociativă . Cheia poate fi doar un șir, valoarea poate fi doar orice formă.
    • Un set numerotat de valori. În multe limbi, acest lucru este implementat ca matrice, vector, listă sau secvență.

    Acestea sunt structuri de date universale. În teorie, toate limbajele de programare moderne le susțin într-o formă sau alta. Deoarece JSON este folosit pentru a face schimb de date între diferite limbaje de programare, este logic să îl construiți pe aceste structuri.

    Următoarele forme sunt utilizate în JSON:

    • Un obiect este un set neordonat de perechi nume/valoare cuprinse între acolade ( ). Există un simbol între nume și valoare ": " , iar perechile nume/valoare sunt separate prin virgule.
    • O matrice (unidimensională) este un set de valori care au numere de serie (indici). Matricea este cuprinsă între paranteze drepte. Valorile sunt separate prin virgule.
    • Valoarea poate fi liniaîntre ghilimele duble, număr, valoare Adevărat sau fals, obiect, matrice, sau valoare nul. Aceste structuri pot fi imbricate unele în altele.
    • Un șir este un set ordonat de zero sau mai multe caractere Unicode, cuprinse între ghilimele duble, folosind secvențe de escape backslash. Caracterele sunt reprezentate ca un șir simplu.
    • Numele este un șir.

    Linia foarte asemănător cu un șir în limbi și Java. Număr de asemenea, foarte asemănător cu un număr C sau Java, cu excepția faptului că este folosit doar formatul zecimal. Pot fi introduse spații între oricare două caractere.

    Următorul exemplu arată o reprezentare JSON a unui obiect care descrie o persoană. Obiectul are şir Câmpurile nume și prenume, un obiect care descrie adresa și o matrice care conține o listă de numere de telefon.

    ( „firstName” : „Ivan” , „lastName” : „Ivanov” , „adresă” : ( „streetAddress” : „Moskovskoe sh., 101, apt. 101” , „city” : „Leningrad” , „postalCode” : 101101 ), „phoneNumbers” : [ „812 123-1234” , „916 123-4567” ] )

    În XML, o astfel de structură ar arăta cam așa:

    Ivan Ivanov Moskovskoe sh., 101, ap. 101 Leningrad 101101 812 123-1234 916 123-4567

    812 123-1234 916 123-4567

    Comparație cu YAML

    Atât din punct de vedere funcțional, cât și din punct de vedere sintactic, JSON este un subset al limbajului YAML. Mai exact, specificația YAML 1.2 afirmă că „orice fișier JSON este un fișier YAML valid”. Cel mai comun parser YAML poate procesa și JSON. Specificația YAML anterioară versiunii 1.2 nu acoperea în totalitate JSON, în primul rând din cauza lipsei de suport nativ pentru UTF-32 în YAML, precum și a cerinței pentru un spațiu după delimitatorul virgulă. În plus, specificația JSON a inclus comentarii de stil /* */.

    Cea mai importantă diferență în YAML este setul de extensii de sintaxă care nu au analogi în JSON:

    Relațional: YAML acceptă date relaționale: într-un document YAML, puteți face referire la o ancoră care a apărut mai devreme într-un fișier/flux. Structurile recursive pot fi exprimate în acest fel. Extensibil: YAML acceptă tipuri de date extensibile dincolo de primitive (adică șiruri, numere, boolean). Blocuri: în YAML, este disponibilă sintaxa blocurilor indentate; vă permite să descrieți date structurate fără a utiliza simboluri inutile (toate tipurile de paranteze, ghilimele etc.).

    Schema JSON

    Schema JSON este una dintre limbile pentru descrierea structurii unui document JSON. Utilizează sintaxa JSON. Bazat pe conceptele XML Schema, RelaxNG, Kwalify. Schema JSON este un limbaj auto-descriptiv: atunci când este utilizat, aceleași instrumente de serializare/deserializare pot fi folosite pentru a procesa datele și a descrie valabilitatea acestora.

    Folosind JSON în Ajax

    Următorul exemplu de cod Javascript arată cum un browser poate utiliza XMLHttpRequest pentru a solicita un obiect formatat JSON de la server (partea de server a programului este omisă; trebuie să conțină codul care trimite datele ca șir JSON ca răspuns la solicitările de la url).

    Var the_obiectul; var http_request = new XMLHttpRequest() ; http_request.open("GET", url, true); http_request.send(null); http_request.onreadystatechange = function () ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse ( http_request.responseText ) ; ) else ( alert( „A existat o problemă cu URL-ul." ) ; ) http_request = null ; ) );

    Rețineți că acest exemplu de utilizare a XMLHttpRequest nu este universal pentru toate browserele (pentru browserele bazate pe Internet Explorer, Opera, Safari și Mozilla, ar trebui să existe unele diferențe în cod). Utilizarea XMLHttpRequest este limitată din cauza aceleiași politici de origine: adresa URL a răspunsului la cerere trebuie să fie în același domeniu DNS cu serverul pe care se află pagina care solicită răspunsul. O alternativă este abordarea JSONP, care implică utilizarea unui apel de funcție codificat transmis între client și server, astfel încât clientul să poată încărca date codificate JSON de pe domenii terțe și să notifice apelantul de finalizare, deși acest lucru introduce unele riscuri de securitate și cerințe suplimentare de server.

    Alternativ, codul paginii poate folosi elemente pentru a solicita asincron date JSON sau pur și simplu . Aceste abordări erau comune înainte de suportul larg răspândit pentru XMLHttpRequest.

    De asemenea, puteți utiliza aceeași politică de origine pentru a transfera date JSON folosind etichete dinamice, dar acest lucru are ca rezultat cod vulnerabil. Ca alternativă mai sigură, s-a sugerat utilizarea JSONRequest.

    Intrebari de securitate

    Deși JSON este conceput pentru a transmite date într-o formă serializată, sintaxa sa urmează sintaxa JavaScript și acest lucru creează o serie de probleme de securitate. Adesea, pentru a procesa datele primite de la o sursă externă în format JSON, i se aplică funcția eval() fără nicio validare preliminară.

    JavaScript eval()

    Deoarece JSON pare a fi o bucată de cod JavaScript corectă din punct de vedere sintactic, cel mai simplu mod de a analiza datele JSON într-un program JavaScript este să utilizați funcția încorporată JavaScript eval(), care este concepută pentru a executa expresii JavaScript. Cu această abordare, nu este nevoie să folosiți analizatori suplimentari.

    Tehnica eval() face sistemul vulnerabil dacă sursa datelor JSON utilizate nu este de încredere ( Engleză). Astfel de date pot fi cod JavaScript rău intenționat pentru atacurile cu injecție de cod ( Engleză). Folosind această vulnerabilitate, este posibil să furați date și să falsificați autentificarea. Cu toate acestea, vulnerabilitatea poate fi eliminată prin utilizarea unor instrumente suplimentare de validare a datelor. De exemplu, înainte de a executa eval(), datele primite de la o sursă externă pot fi validate folosind expresii regulate. RFC care definește JSON sugerează utilizarea următorului cod pentru a verifica dacă este conform cu formatul JSON

    Var my_JSON_object = ! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\]) )*"/g , "" ) ) ) && eval("(" + text + ")" ) ;

    Ca alternativă mai sigură la eval(), a fost propusă o nouă funcție, parseJSON(), care poate procesa doar date JSON. A fost introdus în versiunea 4 a standardului ECMAScript și este descris în articolul „JSON: A Low-Fat Alternative to XML”. În prezent este disponibilă ca bibliotecă JavaScript și va fi inclusă în cea de-a cincea ediție a ECMAScript.

    JSON încorporat

    Versiunile recente ale browserelor web au suport încorporat pentru JSON și sunt capabile să-l proceseze fără a apela funcția eval(), ceea ce duce la problema descrisă. Procesarea JSON este de obicei mai rapidă în acest caz. Deci, în iunie 2009, următoarele browsere aveau suport JSON încorporat:

    Cel puțin cinci biblioteci JavaScript populare folosesc JSON inline atunci când sunt disponibile:

    Falsificarea cererii pe mai multe domenii

    Utilizarea slabă a JSON face site-urile vulnerabile la falsificarea cererilor pe mai multe site-uri (CSRF sau XSRF). Deoarece eticheta permite utilizarea unei surse care nu aparține aceluiași domeniu cu resursa care o folosește, permite executarea codului sub masca datelor JSON în contextul unei pagini arbitrare, făcând posibilă compromiterea parolelor sau alte informatii sensibile ale utilizatorilor autorizati pe alt site.

    Aceasta pare a fi o problemă doar dacă datele JSON conțin informații sensibile care ar putea fi compromise de o terță parte și dacă serverul se bazează pe o politică cu o singură origine ( Engleză), blocând accesul la date atunci când este detectată o solicitare externă. Aceasta nu este o problemă dacă serverul determină validitatea cererii, furnizând date doar dacă aceasta este corectă. Cookie-urile HTTP nu pot fi folosite pentru a determina acest lucru. Utilizarea exclusivă a cookie-urilor HTTP este utilizată de falsificarea cererilor între site-uri.

    JSONP și JSONPP

    JSONP (JSON Padding) sau „JSON cu padding” este o extensie a JSON atunci când numele unei funcții de apel invers este specificat ca argument de intrare.

    Tehnologia se bazează pe faptul că politica de securitate a browserului permite utilizarea etichetei pentru a accesa alte servere decât serverul de pe care a fost încărcată pagina.

    Fără a utiliza tehnologia JSONP (adică folosind doar codificarea datelor JSON), serverul poate returna doar date. De exemplu astfel:

    ("hârtie": "A4", "număr": 5)

    Cu toate acestea, acestea sunt doar date și nu pot afecta browserul.

    Folosind tehnica JSONP, numele funcției de apel invers este transmis serverului terță parte în linia de apel (GET):

    Aici parametrul jsonp conține numele funcției de apel invers parseResponse.

    Acum, serverul străin example.com poate returna următorul cod:

    ParseResponse(( „hârtie” : „A4” , „număr” : 5 ) )

    Codul apelează acum funcția javascript a primului domeniu.

    Ideea a fost propusă inițial pe blogul MacPython în 2005 și este utilizată în prezent de multe aplicații Web 2.0, cum ar fi Dojo Toolkit Applications, Google Toolkit Applications și zanox Web Services. Au fost propuse extensii suplimentare ale acestui protocol pentru a include argumente suplimentare, cum ar fi suportul JSONPP pentru serviciile web S3DB.

    Deoarece JSONP utilizează etichete de script, apelurile sunt în esență deschise lumii. Din acest motiv, JSONP poate fi inadecvat pentru stocarea datelor sensibile.

    Activarea etichetelor de script de pe site-uri la distanță le permite să transmită orice conținut de pe site. Dacă site-ul la distanță are vulnerabilități care permit injectarea Javascript, atunci site-ul original poate fi și el afectat de acestea.

    JSONPP (JSON parametrizat cu padding) JSON parametrizat cu padding - dezvoltarea ideii JSONP

    JSONPP include adresa URL sursă, numele funcției care va procesa datele JSON, o linie pentru eval după primirea datelor și o linie pentru eval după terminarea procesării datelor:

    JSON_call(SRC, JSONP, JSONPP, ONLOAD) ;

    în cele din urmă se întoarce

    Răspuns = JSONP(SRC) ( eval(JSONPP(ans) ) ; eval(ONLOAD) ; )

    În general, numărul de parametri nu este important pentru ideea JSONPP în sine. SRC, JSONP, JSONPP (și procesarea lor pe partea serverului și apoi pe partea clientului) sunt suficiente pentru ca acesta să fie JSONPP.

    Să ne uităm la exemplul de lucru cu serviciul S3DB.

    Funcția s3db_jsonpp_call(src, next_eval) ( var call = "call_" + Math .random () .toString () .replace (/\./g, "" ); var headID = document.getElementsByTagName ("head") [ 0 ] ; var script = document.createElement ("script" ); script.id = apel; script.type = "text/javascript" ; // utilizând json src cu parametri captuși = src+ "&format=json&jsonp=s3db_jsonpp&jsonpp=" + next_eval+ "&onload=remove_element_by_id("" + script.id + "")" ; script.src = src; headID.appendChild (script) ; // preluați răspunsul ) funcție s3db_jsonpp(ans, jsonpp) ( eval(jsonpp) ; returnează răspuns ; ) funcția remove_element_by_id(id) ( var e = document.getElementById (id) ; e.parentNode .removeChild (e) ; return false ; )

    În exemplu, funcția s3db_jsonpp_call() creează un element de script în DOM în partea de cap, al cărui src corespunde apelului JSONPP.

    După primirea unui răspuns de la server, s3db_jsonpp() va fi apelat - este transmis în parametrii de apel, așa cum ar trebui să fie conform regulilor JSONP.

    În interiorul s3db_jsonpp() eval(jsonpp) se va declanșa și va returna valoarea ans.

    Apelarea eval(onload) duce la executarea remove_element_by_id() cu id-ul scriptului creat în cap și în cele din urmă la ștergerea acestuia, deoarece nu va fi folosit oricum, deoarece id-ul din exemplu a fost generat aleatoriu chiar la începutul funcția s3db_jsonpp_call(). Acest apel este în răspunsul serverului.

    Referințe la obiecte

    Standardul JSON nu acceptă referințe la obiecte, dar Dojo Toolkit demonstrează modul în care JSON standard poate suporta astfel de referințe folosind convenții suplimentare. În special, modulul dojox.json.ref oferă suport pentru mai multe forme de linkuri, inclusiv linkuri circulare, multiple, inter-document și lene.

    Vezi și Note
  • YAML Ain't Markup Language (YAML™) Versiunea 1.2 (engleză) . - Proiect de lucru 2008-05-11.(link inaccesibil - poveste) Consultat la 24 septembrie 2009.
  • . RedHanded (07 aprilie 2005). Consultat la 25 septembrie 2012. .
  • Json.Com Propunere de schemă JSON (link inaccesibil - poveste)
  • RFC 4627
  • JSON: Alternativa fără grăsimi la XML. Arhivat
  • json2.js (engleză) . Arhivat din original pe 12 februarie 2012. Consultat la 24 septembrie 2009.
  • Folosind JSON încorporat.
  • JSON încorporat în IE8. Arhivat din original pe 12 februarie 2012.
  • Specificații web acceptate în Opera Presto 2.5 (engleză) (10 martie 2010). Arhivat din original pe 12 februarie 2012. Consultat la 29 martie 2010.
  • Implementarea ES 3.1 a obiectului JSON.
  • Biletul #4429lang=ro . Arhivat din original pe 12 februarie 2012.
  • Biletul #4429 (22 mai 2009). Arhivat din original pe 12 februarie 2012. Consultat la 3 iulie 2009.
  • Biletul #8111lang=ro . Arhivat din original pe 12 februarie 2012.
  • MooTools Core & More 1.3.1. Arhivat din original pe 12 februarie 2012.
  • YUI 2: utilitar JSON (1 septembrie 2009). Arhivat din original pe 12 februarie 2012. Consultat la 22 octombrie 2009.
  • Aflați JSON (7 aprilie 2010). Arhivat din original pe 12 februarie 2012. Consultat la 7 aprilie 2010.
  • Jeremy Grossman Tehnici avansate de atac împotriva aplicațiilor web folosind GMail. Securitate WhiteHat. Arhivat din original pe 12 februarie 2012. Consultat la 23 septembrie 2009.
  • din __future__ import * » Remote JSON - JSONP . bob.pythonmac.org. Arhivat din original pe 12 februarie 2012. Consultat la 8 septembrie 2008.
  • Almeida, Jonas (11 iunie 2008). „JSON, JSONP, JSONPP? „(S3DB). Consultat 2009-04-26.
  • RIAspot JSON P pentru Cross Site XHR .(link inaccesibil - poveste)
  • Referințe JSON în Dojo. Arhivat din original pe 12 februarie 2012.
  • Legături
    • Pagina de pornire în format oficial în rusă
    • json.js, json2.js este o bibliotecă dezvoltată de Douglas Crockford pentru a lucra cu date JSON în JavaScript. Extinde un obiect cu metoda toJSONString, care este apoi prezentă în orice obiect și îl convertește într-un șir în format JSON.
    • json-rpc.org (engleză)
    Limbaje de marcare a documentelorDocumente de birou

    O lecție care examinează ce este JSON și cum are avantaje față de alte formate de date.

    Conceptul de JSON

    JSON (JavaScript Object Notation) este un format de text pentru reprezentarea datelor în notația obiect JavaScript.

    Aceasta înseamnă că datele din JSON sunt organizate în același mod ca într-un obiect JavaScript. Dar, spre deosebire de acesta din urmă, formatul de înregistrare JSON are câteva caracteristici care vor fi discutate puțin mai târziu.

    JSON este folosit de obicei împreună cu AJAX, astfel încât serverul să poată transfera date într-o formă convenabilă într-un script JavaScript, care le va afișa apoi pe pagină.

    Structura formatului JSON

    Oricine este familiarizat cu procesul de creare a obiectelor în JavaScript nu va vedea nimic nou în structura formatului JSON. Acest lucru se datorează faptului că structura JSON urmează structura unui obiect JavaScript, cu unele limitări.

    Este mai ușor să ne gândim la JSON ca la un container format din elemente. Fiecare element dintr-un astfel de container este o anumită unitate structurală constând dintr-o cheie și o valoare.

    În acest caz, valoarea este direct legată de cheie și formează o așa-numită pereche cheie-valoare. Pentru a obține valoarea într-un astfel de obiect, trebuie să cunoașteți cheia acestuia. Sintactic, astfel de date sunt scrise în JSON după cum urmează:

    În intrarea de mai sus, puteți vedea că cheia este separată de valoare folosind două puncte (:). În acest caz, cheia din obiectul JSON trebuie inclusă între ghilimele duble. Aceasta este prima caracteristică a JSON care îl deosebește de un obiect JavaScript. Deoarece într-un obiect JavaScript, cheia (proprietatea obiectului) nu trebuie să fie cuprinsă între ghilimele duble.

    De exemplu, o structură de obiect care este validă din punct de vedere JavaScript, dar nu este validă din punct de vedere JSON:

    Var persoană = (nume: „Ivan”; ) // obiect JavaScript

    Atenție: încercați să denumiți cheia pentru a nu complica accesul la date, adică. Când compuneți un nume, este de preferat să respectați notația de cămilă sau să folosiți un caracter de subliniere ("_") pentru a conecta cuvintele.

    Valoarea cheie în JSON poate fi scrisă în unul dintre următoarele formate: șir, număr, obiect, matrice, boolean (valoare booleană adevărată sau falsă), null (valoare JavaScript specială).

    Aceasta este a doua limitare în JSON, deoarece Un obiect JavaScript poate conține orice tip de date, inclusiv o funcție.

    Var person = ("nume": "Ivan"; "setName": function() ( console.log(this.name); ) ) // obiect JavaScript

    Pentru a separa un element (perechea cheie-valoare) de altul, utilizați caracterul virgulă (,).

    De exemplu, luați în considerare JSON, care constă din diferite tipuri de date.

    Atenție: formatul de date JSON nu permite comentarii în structura sa.

    Lucrul cu JSON în JavaScript

    Spre deosebire de un obiect JavaScript, JSON este un șir.

    De exemplu:

    // de exemplu, variabila personData conține un șir care este JSON var personData = "("name":"Ivan","age":37,"mother":("name":"Olga","age": 58),"copii":["Masha","Igor","Tanya"],"căsătorit": adevărat,"câine": nul)";

    Lucrul cu JSON se desfășoară de obicei în două direcții:

  • Analiza este actul de traducere a unui șir care conține JSON într-un obiect JavaScript.
  • Convertiți un obiect JavaScript într-un șir JSON. Cu alte cuvinte, această acțiune face opusul analizei.
  • Analiza JSON

    Analiza JSON, de ex. Traducerea unui șir JSON într-un obiect JavaScript se face folosind metoda eval() sau parse().

    Folosind metoda eval():

    // variabila persoană este un obiect JavaScript care se obține prin executarea codului JSON (șir) var person= eval("("+personData+")");

    Folosind metoda JSON.parse():

    // variabila person este un obiect JavaScript care se obține prin parsarea unui șir JSON var person = JSON.parse(personData);

    Conversia unui obiect JavaScript într-un șir JSON

    Traducerea unui obiect JavaScript într-un șir JSON se face folosind metoda JSON.stringify(). Această metodă face opusul metodei JSON.parse().

    Var personString = JSON.strigify(persoana);

    Avantajele formatului JSON

    Formatul de date JSON are următoarele avantaje:

    • metode convenabile și rapid de utilizat concepute pentru a converti (parsa) un șir JSON într-un obiect JavaScript și înapoi;
    • structură de date clară și simplă;
    • dimensiuni foarte mici în comparație cu alte formate de date (de ex. XML). Acest lucru se datorează faptului că formatul JSON conține formatarea minimă posibilă, de exemplu. Când scrieți, sunt folosite doar câteva caractere speciale. Acesta este un avantaj foarte important, deoarece... Datele prezentate în format JSON se vor încărca mai repede decât dacă ar fi prezentate în alte formate.

    Datorită faptului că acest format are atât de multe avantaje, a devenit folosit nu numai în JavaScript, ci și în multe alte limbi, precum C, Ruby, Perl, Python, PHP etc.

    Comparație între formatele JSON și XML

    Formatul JSON are următoarele avantaje față de formatul XML:

  • Pentru unele transferuri de date, dimensiunea JSON va fi semnificativ mai mică decât dimensiunea XML.
  • JSON are metode de conversie mai bune la structurile de date JavaScript decât XML.
  • JSON este mai ușor de creat decât XML.
  • Lucrul cu date JSON după analizare se face ca obiect JavaScript.

    //JSON var personData = "("nume":"Ivan","varsta":37,"mama":("nume":"Olga","varsta":58),,"copii":["Masha " ,"Igor","Tanya"],"căsătorit": adevărat,"câine": nul)"; //Obiect JavaScript person var person = JSON.parse(personData);

    Să ne uităm la punctele principale:

    //obține valorile cheii (proprietății) nume person.name; persoană[„nume”]; //obține valorile numelui cheii (proprietății) aflate în obiectul mamă persoană.mamă.nume; //sterge elementul de varsta delete(persoana.varsta) //adaugă (sau actualiza) cheie (proprietate) person.eye = "maro"; //când lucrați cu matrice, trebuie să utilizați metode concepute pentru a funcționa în mod specific cu matrice //eliminați 1 element din matrice (metoda splice) person.children.splice(1,1) //adăugați un element în matrice (metoda push ) persoană.copii.împinge(„Katya”);

    Pentru a itera elementele dintr-un obiect, puteți utiliza o buclă for..in:

    Pentru (cheie în persoană) ( dacă (person.hasOwnProperty(cheie)) ( //cheie = cheie //valoare = persoană console.log("Cheie = " + cheie); console.log("Valoare = " + persoană) ; ) // dacă obiectul persoană are o cheie (dacă persoana are o proprietate cheie) ) // iterează prin toate cheile (proprietățile) din obiect

    Pentru a itera elementele unui tablou, puteți utiliza următoarea buclă:

    Pentru (var i=0; i

    Cea mai frecventă problemă care împiedică utilizatorii să deschidă acest fișier este un program atribuit incorect. Pentru a remedia acest lucru în sistemul de operare Windows, trebuie să faceți clic dreapta pe fișier, în meniul contextual, să treceți cu mouse-ul peste elementul „Deschide cu” și să selectați „Selectați un program...” din meniul derulant. Ca rezultat, veți vedea o listă de programe instalate pe computer și îl puteți selecta pe cel adecvat. De asemenea, vă recomandăm să bifați caseta de lângă „Utilizați această aplicație pentru toate fișierele JSON”.

    O altă problemă pe care utilizatorii noștri o întâmpină destul de des este că fișierul JSON este corupt. Această situație poate apărea în multe cazuri. De exemplu: fișierul a fost descărcat incomplet ca urmare a unei erori de server, fișierul a fost deteriorat inițial etc. Pentru a rezolva această problemă, utilizați una dintre recomandările:

    • Încercați să găsiți fișierul de care aveți nevoie într-o altă sursă de pe Internet. S-ar putea să ai noroc să găsești o versiune mai potrivită. Exemplu de căutare Google: „File filetype:JSON” . Doar înlocuiți cuvântul „fișier” cu numele dorit;
    • Cereți-le să vă trimită din nou fișierul original, este posibil să fi fost deteriorat în timpul transmiterii;