php trimite json. NodeJS. Cum se trimit date în format JSON

JSON (JavaScript Object Notation) este un format pentru schimbul de date în forma text. Permițându-vă să transferați structuri complexe de date într-o formă serializată. Acest format de transfer de date a devenit atât de popular încât, începând cu versiunea 5.2.0 a nucleului PHP, au fost adăugate funcții pentru procesarea datelor în acest format. Și asta înseamnă că nu este nevoie să te conectezi extensii suplimentare. Formatul de date JSON este bine înțeles de un om. in afara de asta tipul dat schimbul de date este utilizat pe scară largă între diferite servicii API. Și cu dezvoltarea corectă a algoritmilor pentru schimbul de informații, puteți obține o creștere a vitezei foarte mare decât, de exemplu, atunci când lucrați cu date în format XML.

Trimiterea datelor

Există două moduri de a trimite date în format JSON: formați un GET sau Solicitare POST cu date codificate situate într-o variabilă GET sau POST sau puneți datele în corpul documentului. În practică, a doua opțiune este de obicei utilizată.

Pentru a trimite date, sunt necesare următoarele funcții:

  • şir json_encode(valoare mixtă [, opțiuni int = 0])

    Parametrul value specifică datele care trebuie codificate. Orice tip este acceptat, cu excepția tipului resursă. Parametrul opțiuni conține o mască de biți a posibilelor valori furnizate (vezi tabelul cu constantele furnizate JSON).

  • resursă stream_context_create (])

    Această funcție este destinată să creeze și să returneze un context de fir cu opțiunile specificate în parametrul opțiuni. Parametrul opțional opțional trebuie să fie de tip matrice asociativă. Inițial, este gol. Al doilea parametru opțional params trebuie să fie, de asemenea, o matrice asociativă în formatul $data['nume'] = valoare.

  • şir file_get_contents(șir nume de fișier [, bool use_include_path [, contextul resursei [, int offset [, int maxlen ]]]])

    Utilizarea acestei funcții vă permite să obțineți conținutul unui fișier ca șir. Parametrul nume de fișier este numele fișierului citit. În parametrul use_include_path începând de la versiuni PHP 5 puteți folosi o constantă FILE_USE_INCLUDE_PATH pentru a căuta un fișier în calea include. Parametrul context reprezintă resursa context creată cu funcția stream_context_create(). În cazul unei încercări nereușite de a deschide fișierul, valoarea va fi returnată. fals. Parametrul offset conține offset-ul de la care se începe citirea datelor. Parametrul maxlen specifică dimensiunea datelor primite.

    Notă: offset-ul nu este specificat atunci când lucrați cu fire de execuție la distanță.

Următorul este un exemplu de trimitere a datelor în format JSON:

// Date de trimis $request = array("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => array(1,2,3,4 ,5,6,7)); // Specificarea opțiunilor pentru contextul fluxului $options = array ("http" => matrice ("method" => "POST", "header" => "Content-Type: application/json; charset=utf-8\r \ n", "conținut" => json_encode($request))); // Creați un context de flux $context = stream_context_create($opțiuni); // Trimiterea datelor și obținerea rezultatului echo file_get_contents("http://test.ru/json.php", 0, $context);

Utilizează o structură de date improvizată constând dintr-o dată de început și de sfârșit, precum și o serie de numere ale unor înregistrări condiționate. Observați că în antetul cererii tipul de conținut este specificat tipul „application/json”.

Obținerea datelor

Pentru a primi datele transmise în modul de mai sus, este necesar să citiți datele din fluxul de intrare „ php://input”.

Funcții utilizate pentru acceptarea datelor:

  • amestecat json_decode(șir json [, bool assoc = false [, int depth = 512 [, int opțiuni = 0 ]]])

    Această funcție decodifică un șir JSON. Parametrul json specifică șirul care trebuie decodat. Parametrul assoc controlează dacă datele returnate vor fi convertite în matrice asociativă. Dacă există o astfel de nevoie, atunci trebuie să specificați ca valoare a acestui parametru Adevărat. Parametrul depth indică adâncimea recursiunii. Iar ultimele opțiuni de parametru al patrulea conține masca de biți a opțiunilor de decodat. Momentan doar acceptat JSON_BIGINT_AS_STRING(în mod implicit, numerele întregi mari sunt convertite în numere în virgulă mobilă (float))

  • resursă fopen(șir nume fișier , mod șir [, bool use_include_path [, context resursă ]])

    Deschide un fișier și returnează mânerul acestuia. Parametrul nume de fișier este o resursă numită care indică un fișier. Parametrul mode specifică tipul de acces la fișier (vezi listarea tabelului moduri posibile pentru fopen()). Urmează doi parametri opționali: use_include_path și context . Când setați parametrul use_include_path la Adevărat sau 1 și cu condiția ca resursa numită să fie setată la cale relativă, fișierul care se deschide va fi căutat în lista directoarelor utilizate de funcții includeȘi cere. În practică, acest parametru practic nu este utilizat. Parametrul de context este utilizat pentru a specifica contextul resursei.

  • şir stream_get_contents(mânerul resursei [, int maxlen = -1 [, int offset = -1 ]])

    Această funcție vă permite să obțineți conținutul fluxului ca șir. Parametrul handle este o resursă de flux. Parametrul maxlen conține suma maxima octeți de citit. În mod implicit, este setat la -1, ceea ce indică faptul că toate datele sunt primite. Parametrul offset conține offset-ul de la care se începe citirea datelor. De asemenea, este setat implicit la -1, ceea ce înseamnă că va citi din poziția de pornire.

Următorul este un exemplu de obținere a datelor în format JSON pe partea serverului:

// Deschide fluxul de intrare pentru citirea $f = fopen("php://input", "r"); // Obține conținutul fluxului $date = stream_get_contents($f); if ($date) ( // Cod de procesare print_r(json_decode($data)); )

Structura de date rezultată:

Obiect StdClass ( => 2013-10-10 => 2013-10-10 => Array ( => 1 => 2 => 3 => 4 => 5 => 6 => 7))

Notă: este necesar să se țină cont de faptul că pentru a lucra cu format JSON, datele trebuie să fie în codificare utf-8.

Constante furnizate de JSON pentru funcția json_encode().

JSON_HEX_TAG (întreg) Toate sunt codificate în \u003C și \u003E. Disponibil începând cu PHP 5.3.0.
JSON_HEX_AMP (întreg) Toate & sunt codificate în &. Disponibil începând cu PHP 5.3.0.
JSON_HEX_APOS (întreg) Toate caracterele ‘ sunt codificate în \u0027. Disponibil începând cu PHP 5.3.0.
JSON_HEX_QUOT(întreg) Toate caracterele " sunt codificate în \u0022. Disponibil începând cu PHP 5.3.0.
JSON_FORCE_OBJECT(întreg) Returnează un obiect în loc de o matrice atunci când utilizați o matrice non-asociativă. Acest lucru este util atunci când programul sau codul de recepție așteaptă un obiect sau matricea este goală. Disponibil începând cu PHP 5.3.0.
JSON_NUMERIC_CHECK(întreg) Codificarea șirurilor care conțin numere ca numere. Disponibil începând cu PHP 5.3.3.
JSON_BIGINT_AS_STRING(întreg) Codifică numere întregi mari ca echivalente ale șirului lor. Disponibil începând cu PHP 5.4.0.
JSON_PRETTY_PRINT(întreg) Utilizare caractere cu spații albeîn datele returnate pentru a le formata. Disponibil începând cu PHP 5.4.0.
JSON_UNESCAPED_SLASHES (întreg) Nu scapi /. Disponibil începând cu PHP 5.4.0.
JSON_UNESCAPED_UNICODE(întreg) Nu codificați caractere Unicode pe mai mulți octeți (în mod implicit, acestea sunt codificate ca \uXXXX). Disponibil începând cu PHP 5.4.0.

Lista modurilor posibile pentru fopen() folosind mode

‘r’ Deschide un fișier numai în citire; plasează indicatorul la începutul fișierului.
„r+” Deschide un fișier pentru citire și scriere; plasează indicatorul la începutul fișierului.
'w' Deschide un fișier numai pentru scriere; plasează indicatorul la începutul fișierului și trunchiază fișierul la lungimea zero. Dacă fișierul nu există, încearcă să-l creeze.
'w+' Deschide un fișier pentru citire și scriere; plasează indicatorul la începutul fișierului și trunchiază fișierul la lungimea zero. Dacă fișierul nu există, încearcă să-l creeze.
'A' Deschide un fișier numai pentru scriere; plasează un indicator la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze.
„a+” Deschide un fișier pentru citire și scriere; plasează un indicator la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze.
'X' Creează și deschide doar pentru scris; plasează indicatorul la începutul fișierului. Dacă fișierul există deja, apelul fopen() va eșua, va returna FALSE și va genera o eroare la nivel E_WARNING. Dacă fișierul nu există, va încerca să-l creeze. Acest lucru este echivalent cu specificarea steagurilor O_EXCL|O_CREAT pentru interne apel de sistem deschis(2).
'x+' Creează și deschide spre citit și scris; altfel are același comportament ca „x”.
'c' Deschide un fișier numai pentru scriere. Dacă fișierul nu există, atunci este creat. Dacă fișierul există, atunci nu este trunchiat (spre deosebire de „w”), iar un apel la această funcție nu generează o eroare (la fel ca și în cazul lui „x”). Indicatorul fișierului va fi setat la începutul fișierului. Acest lucru poate fi util dacă doriți să blocați fișierul (vezi flock()) înainte de a-l schimba, deoarece folosirea „w” poate trunchia fișierul înainte ca blocarea să fie obținută (dacă doriți să trunchiați fișierul, puteți utiliza ftruncate () funcția după solicitarea blocării). ).
'c+' Deschide un fișier pentru citire și scriere; altfel are același comportament ca „c”.

9 răspunsuri

Am o mulțime de informații aici, așa că am vrut să postez soluția pe care am găsit-o.

Problemă: Obținerea datelor JSON din Javascript în browser, server și Utilizarea PHP pentru o analiză de succes.

Miercuri: Javascript în browser (Firefox) pe Windows. Server LAMP ca server la distanta: PHP 5.3.2 pe Ubuntu.

Ce funcționează (versiunea 1):
1) JSON este doar text. Text într-un anumit format, dar numai șir de text.

2) În Javascript, var str_json = JSON.stringify(myObject) îmi oferă un șir JSON.

3) Folosesc obiectul AJAX XMLHttpRequest în Javascript pentru a trimite date către server:
cerere = XMLHttpRequest nou ()
request.open(„POST”, „JSON_Handler.php”, adevărat)
request.setRequestHeader(„Tipul de conținut”, „aplicație/json”)
request.send(str_json)
[... cod pentru afișarea răspunsului...]

4) Pe server, codul PHP pentru a citi șirul JSON:
$str_json = file_get_contents("php://input");
Aceasta citește datele brute POST. $str_json conține acum șirul JSON exact din browser.

Ce funcționează (versiunea 2):
1) Dacă vreau să folosesc antetul cererii „application/x-www-form-urlencoded” , trebuie să creez un șir POST standard „x=y&a=b”, astfel încât atunci când PHP îl primește, să poată fi plasat în Matrice asociativă $_POST. Deci, în Javascript în browser:

var str_json = "json_string=" + (JSON.stringify(myObject))

Acum PHP va putea popula matricea $_POST când trimit str_json prin AJAX/XMLHttpRequest ca în versiunea 1 de mai sus.

Afișarea conținutului $_POST["json_string"] va afișa șirul JSON. Folosirea json_decode() pe elementul de matrice $_POST cu un șir json va decoda corect acele date și le va pune într-o matrice/obiect.

Capcana pe care am întâlnit-o:
Inițial am încercat să trimit un șir JSON cu antetul aplicației /x -www-form-urlencoded și apoi am încercat să-l citesc imediat din matricea $_POST în PHP. Matricea $_POST a fost întotdeauna goală. Acest lucru se datorează faptului că se așteaptă date de forma yval = xval & . Nu a găsit astfel de date, doar un șir JSON și pur și simplu le-a aruncat. M-am uitat la antetele cererii și datele POST au fost trimise corect.

De asemenea, dacă folosesc antetul aplicație/json, nu pot accesa din nou datele trimise prin matricea $_POST. Dacă doriți să utilizați antetul de conținut app/json, atunci trebuie să accesați versiunea brută Date POSTîn PHP prin intrarea php://, nu cu $_POST.

Literatură:
1) Cum se accesează datele POST în PHP: Cum se accesează datele POST în PHP?
2) informatii detaliate despre tipul aplicație/json cu câteva obiecte eșantion care pot fi convertite în șiruri JSON și trimise la server: http://www.ietf.org/rfc/rfc4627.txt< ш >

fișier javascript Cu folosind jQuery(mai curat, dar biblioteca peste cap):

$.ajax(( tip: „POST”, url: „process.php”, date: (json: JSON.stringify(json_data)), dataType: „json” ));

Fișier PHP (process.php):

Direcții = json_decode($_POST["json"]); var_dump(directii);

Vă rugăm să rețineți că dacă utilizați funcțiile sună din nouîn javascriptul tău:

$.ajax(( tip: „POST”, url: „process.php”, date: (json: JSON.stringify(json_data)), dataType: „json” )) .done(function(data) ( console.log ("terminat"); console.log(date); )) .fail(funcție(date) ( console.log("eșuat"); console.log(date); ));

Trebuie să vă fișier PHP returnați un obiect JSON (în formatare javascript) pentru a obține rezultatul „terminat/succes” în dvs Cod Javascript. Pentru returnare/printare minimă:

Imprimare("()");

Deși pentru ceva mai serios trebuie să trimiți explicit titlu corect cu codul de răspuns corespunzător.

Există 3 moduri relevante de a trimite date din partea clientului (HTML, Javascript, Vbscript..etc) către partea serverului (PHP, ASP, JSP...etc)

1. formular HTML Solicitare de postare (GET sau POST). 2. AJAX (Acest lucru vine și sub GET și POST) 3. Cookie

Formular de solicitare a postării HTML (GET sau POST)

Aceasta este metoda cea mai des folosită și putem trimite mai multe date folosind această metodă.

Aceasta este o metodă asincronă și ar trebui să funcționeze într-un mod sigur, aici putem trimite și mai multe date.

Acest mod bun utilizare o cantitate mică de date insensibile. Acest Cel mai bun mod lucrați cu biți de date.

În cazul dvs., puteți prefera trimiterea formularelor HTML sau AJAX. Dar înainte de a trimite la server, validați-vă singur json-ul sau utilizați un link ca http://jsonlint.com/

Dacă Json Object îl convertește în String folosind JSON.stringify(object) dacă aveți șir JSON, trimiteți-l așa cum este.

Un exemplu simplu JavaScript pentru introducerea câmpurilor HTML (trimiterea JSON către server, analizarea JSON în PHP și trimiterea înapoi către client) folosind AJAX:



Fișier PHP ajax-test.php:

date primite:

PHP are o funcție json_decode() încorporată. Doar treceți un șir JSON acestei funcție și îl va converti în șirul, matricea sau obiectul PHP echivalent.

Pentru a-l transmite ca șir din Javascript, îl puteți converti în JSON folosind

Folosind JSON pe partea de server pentru a primi cereri și a crea răspunsuri

Seria de conținut:

Valoarea reală a JSON

Am vorbit despre modul în care JSON este un format de date convenabil pentru aplicațiile Ajax, deoarece vă permite să convertiți rapid obiectele JavaScript în valori de șir și invers. Deoarece aplicațiile Ajax sunt cele mai potrivite pentru trimiterea și primirea de text simplu, este aproape întotdeauna de preferat să folosiți un API care îl poate genera; JSON, pe lângă această caracteristică, vă permite și să lucrați cu obiecte JavaScript native și să nu vă faceți griji cu privire la modul în care vor arăta aceste obiecte în text.

Centrul de resurse Ajax pe developerWorks
Accesați - Sursa unică pentru informații despre programarea Ajax pentru articole, tutoriale, forumuri, bloguri, wiki-uri, evenimente și știri. Dacă se întâmplă ceva, atunci există informații despre asta.

XML are aceleași avantaje ale unui format text ca JSON, dar API-urile pentru conversia obiectelor JavaScript în XML (și există, și nu la singular) nu sunt la fel de bine dezvoltate în comparație cu API-ul JSON; creând și modificând obiecte, uneori trebuie să aveți grijă ca API-ul selectat să poată funcționa normal cu aceste obiecte. Cu JSON, lucrurile sunt mai simple: se ocupă de aproape orice tip de obiect imaginabil și pur și simplu vă returnează datele într-o reprezentare JSON plăcută.

Deci, valoarea principală a JSON este că vă permite să lucrați cu JavaScript ca și cu JavaScript, nu ca în cazul unui limbaj de formatare a datelor. Astfel, puteți aplica toate abilitățile dvs. de obiect JavaScript în codul dvs. fără a vă face griji cu privire la modul în care aceste obiecte vor fi convertite în text. Doar apelați o metodă JSON simplă la sfârșit:

String myObjectInJSON = myObject.toJSONString();

și obțineți textul care poate fi trimis la server.

Livrarea JSON către server

Nu este nimic deosebit de complicat în trimiterea datelor JSON către server, dar este un punct important și aveți o serie de opțiuni din care să alegeți. Cu toate acestea, dacă optați pentru JSON, atunci va fi mult mai ușor să luați decizii ulterioare, deoarece alegerea se va restrânge semnificativ și nu va trebui să vă faceți prea multe griji pentru acest lucru. În cele din urmă, trebuie doar să livrați șirul JSON către server și, de preferință, cât mai rapid și ușor posibil.

Trimiterea JSON în perechi nume/valoare folosind metoda GET

Cel mai simplu mod de a livra date JSON către server este să le convertiți în text și să le trimiteți ca valoare a unei perechi nume/valoare. Amintiți-vă, datele formatate în JSON sunt doar un obiect destul de mare care arată ceva ca Lista 1:

Lista 1. Un obiect JavaScript simplu în format JSON
var oameni = ( "programatori": [ ( "nume": "Brett", "nume":"McLaughlin", "e-mail": " [email protected]" ), ( "firstName": "Jason", "lastName":"Hunter", "email": " [email protected]" ), ( "prenume": "Elliotte", "nume":"Harold", "e-mail": " [email protected]" ) ], "autori": [ ( "prenume": "Isaac", "nume": "Asimov", "gen": "science fiction" ), ( "prenume": "Tad", "nume": " Williams”, „gen”: „fantezie” ), ( „prenume”: „Frank”, „nume”: „Peretti”, „gen”: „ficțiune creștină” ) ], „muzicieni”: [ ( „nume”: „Eric”, „nume”: „Clapton”, „instrument”: „chitară” ), ( „prenume”: „Sergei”, „nume”: „Rachmaninoff”, „instrument”: „pian” ) ] )

Deci, acest text poate fi trimis către scriptul serverului în interiorul perechii nume/valoare, astfel:

var url = "organizePeople.php?people=" + people.toJSONString(); xmlHttp.open(„GET”, url, adevărat); xmlHttp.onreadystatechange = updatePage; xmlHttp.send(null);

Totul pare să fie bine aici, dar, de fapt, există o problemă: în șirul nostru de date JSON există spații și alte caractere pe care browserul Web poate încerca să le interpreteze. Pentru a preveni ca aceste caractere să cauzeze probleme pe server (și să nu perturbe transferul de date), ar trebui să adăugați funcția JavaScript escape() la cod. Ca aceasta:

var url = "organizePeople.php?people=" + escape(people.toJSONString()); request.open("GET", url, true); request.onreadystatechange = updatePage; cerere.trimite(null);

Această funcție gestionează spațiile, barele oblice și orice altceva care ar putea deruta browserul. Le convertește în caractere care sunt „sigure” în acest sens (de exemplu, un spațiu este convertit în secvența de evadare %20 , pe care browserele nu o mai percep ca spațiu, ci pur și simplu îl transmit serverului fără modificări). Apoi serverul va efectua transformarea inversă (de obicei automat), iar noi vom primi șirul în forma în care era înainte de transmitere.

Această abordare are două dezavantaje:

  • În primul rând, trimitem date potențial foarte mari printr-o solicitare GET care are o limită a lungimii șirului URL. Dimensiunea maximă permisă a șirului este foarte mare, dar nu știm niciodată cât de lung vom obține un șir după convertirea unui obiect în text, mai ales dacă acest obiect este destul de complex.
  • În al doilea rând, trimitem date prin rețea în text clar - adică cea mai nesigură dintre toate metodele imaginabile de transmitere a datelor.

Pentru a fi clar, ambele aceste dezavantaje au mai mult de-a face cu limitările cererilor GET decât cu specificul JSON. Cu toate acestea, dacă trimiteți mai mult decât numele de familie sau prenumele unui utilizator sau rezultatul alegerii unui utilizator pe un formular de pe site-ul dvs. către server, atunci aceste neajunsuri vă pot distruge viața. Dacă începeți să lucrați cu date care ar putea fi puțin sensibile sau de dimensiuni mari, cu siguranță ar trebui să vă uitați la solicitările POST.

Transmiterea datelor JSON folosind metoda POST

Dacă decideți să utilizați metoda POST în loc de GET pentru a trimite date JSON către server, atunci nu va trebui să faceți modificări majore la cod. Iată tot ce trebuie să faci:

var url = "organizePeople.php?timeStamp=" + data noua().getTime(); request.open("POST", url, true); request.onreadystatechange = updatePage; request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(people.toJSONString());

Majoritatea acestui cod ar trebui să vă fie familiar din articolul „:”, care a discutat despre efectuarea solicitărilor POST. Aici deschidem cererea folosind POST în loc de GET și setăm antetul „Content-Type” corespunzător, indicând tipul de date așteptat. În în acest caz, va arăta astfel: application/x-www-form-urlencoded , clarificând serverului că transmitem doar date text, pe care, în principiu, le-ar putea primi dintr-un formular HTML obișnuit.

O altă mică modificare a codului este adăugarea orei curente la adresa URL. Acest lucru se face pentru a preveni memorarea în cache a cererilor și pentru a se asigura că cererile sunt create și trimise de fiecare dată când metoda este apelată; șirurile URL vor fi ușor diferite de fiecare dată din cauza modificării marcajului de timp. Aceasta este o tehnică folosită în mod obișnuit pentru a se asigura că cererea POST este de fapt regenerată de fiecare dată și browserul web nu încearcă să memoreze în cache răspunsurile de la server.

JSON este doar text

Când utilizați solicitările GET și POST, este foarte important ca JSON să fie, până la urmă, text simplu. Poate fi manipulat și transferat cu ușurință pe server, deoarece nu necesită codare specială. Datele text pot fi procesate de orice script de server. Dacă JSON ar fi un format binar sau un text codat inteligent, lucrurile nu ar fi atât de ușoare. Deci, JSON sunt date text simplu pe care un script le-ar putea primi în principiu la trimiterea unui formular HTML (așa cum am văzut când am vorbit despre antetul „Content-Type” în solicitările POST), așa că nu trebuie să vă deranjați prea mult pentru a-l trimite la server.

Interpretare JSON pe server

Odată ce ați scris codul JavaScript la nivelul clientului care permite utilizatorilor să interacționeze cu paginile și formularele dvs. Web și aveți informațiile de trimis programului server, actorul principal din aplicația dvs. (și probabil tot ce am numit „Aplicații Ajax”, presupunând că apelul script-ului serverului este executat asincron) devine server. Și aici alegerea pe care ați făcut-o în partea clientului, alegând să utilizați obiecte JavaScript și date JSON, ar trebui să se potrivească cu decizia corespunzătoare din partea serverului, unde este ales API-ul pentru decodarea datelor JSON.

Doi pași pentru a injecta JSON în server

Lucrul cu JSON pe partea de server, indiferent de limbajul serverului utilizat, constă în esență din două etape:

  1. Găsirea unui API JSON parser/toolkit/helper pentru limba serverului dvs
  2. Utilizarea unui parser JSON / toolkit / helper API pentru a extrage date dintr-o solicitare a clientului și a le converti într-un formular ușor de înțeles de un script de server

Și asta este tot ceea ce este. Să aruncăm o privire mai atentă la ambele etape.

Găsirea unui analizator JSON

Cea mai bună resursă pentru a găsi un parser JSON și alte instrumente legate de JSON este site-ul Web JSON (consultați linkurile în ). Pe lângă informații educaționale despre formatul în sine, pe această pagină puteți găsi link-uri către instrumente (instrumente) JSON și analizoare JSON pentru orice platformă: de la ASP la Erlang, de la Pike la Ruby. Găsiți acolo limba în care este scris scriptul și descărcați setul de instrumente corespunzător. Copiați-l pentru dvs. sau actualizați versiunea de limbă a serverului cu el sau pur și simplu instalați-l (există multe opțiuni: totul depinde de ceea ce utilizați pe server: C#, PHP, Lisp sau altceva), principalul lucru este că scripturile sau programe serverul dvs. ar putea folosi acest set de instrumente.

De exemplu, dacă utilizați PHP, este la fel de simplu ca actualizarea la versiunea recentă 5.2, care include extensia JSON în mod implicit. Acesta este probabil cel mai simplu mod de a începe cu JSON dacă utilizați PHP. Dacă utilizați servlet-uri Java, cel mai simplu mod este să utilizați pachetul org.json de la json.org. Pentru a face acest lucru, descărcați arhiva json.zip de pe site-ul Web JSON, copiați fișierele sursă în directorul de compilare al proiectului și compilați-le în consecință și veți fi gata să lucrați cu JSON. Aproximativ același lucru ar trebui făcut și atunci când utilizați alte limbi; cel mai bun asistent în acest sens este propria experiență de programare pentru platforma de server corespunzătoare.

Folosind un analizator JSON

După ce instrumentele necesare sunt instalate, rămâne doar apelarea metodei dorite. De exemplu, să presupunem că folosim PHP și modulul JSON-PHP:

// Acesta este doar un fragment dintr-un script de server PHP mare require_once("JSON.php"); $json = nou Servicii_JSON(); // primiți date POST și decodificați-le $value = $json->decode($GLOBALS["HTTP_RAW_POST_DATA"]); // acum lucrăm cu variabila $value ca și cu datele PHP normale „brute”.

Cu acest cod, punem toate datele (matrice, șiruri multiple, valori unice - tot ce era în structura de date JSON) în variabila $value și în formatul PHP nativ.

Dacă am folosi servlet-uri Java și pachetul org.json pe server, codul ar arăta cam așa:

public void doPost(HttpServletRequest request, HttpServletResponse response) aruncă ServletException, IOException ( StringBuffer jb = new StringBuffer(); String line = null; try ( BufferedReader reader = request.getReader(); while ((line = reader.readLine())) != null) jb.append(line); ) catch (Excepție e) ( //mesaj de eroare ) încercați ( JSONObject jsonObject = nou JSONObject(jb.toString()); ) catch (ParseException e) ( // blocare și ardere throw new IOException("Eroare la analizarea șirului de interogare"); ) // Lucrul cu date folosind metode de tip: // int someInt = jsonObject.getInt("intParamName"); // String someString = jsonObject.getString("stringParamName "); // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName"); // JSONArray arr = jsonObject.getJSONArray ("arrayParamName"); // și așa mai departe... )

Mai multe informații pot fi găsite în documentația pentru pachetul org.json (consultați linkurile din secțiune). (Notă: dacă doriți să aflați mai multe despre org.json sau alte instrumente JSON, vă rugăm să-mi trimiteți un e-mail și să-mi spuneți. Feedbackul dvs. mă ajută să decid ce să scriu în continuare!).

Concluzie

Până acum, ar trebui să cunoașteți deja partea tehnică a utilizării JSON pe server. Dar în acest articol și în articole, am vrut nu doar să arăt câteva aspecte tehnice, ci și să vă conving că JSON este un format de date foarte flexibil și puternic. Chiar dacă nu îl vei folosi în fiecare aplicație, un bun programator Ajax și JavaScript ar trebui să aibă întotdeauna acest instrument util la îndemână și să îl poată folosi atunci când este nevoie.

Cu siguranță mi-ar plăcea să aud despre propriile experiențe cu JSON și despre ce limbi crezi că funcționează bine - sau poate nu foarte bine - cu datele JSON pe partea de server. Consultați pagina grupului de știri Java și XML (linkuri în ) și spuneți-mi despre asta. Bucurați-vă de JSON și de toată puterea formatelor de date text.

  • Serghei Savenkov

    un fel de recenzie „rare”... parcă s-ar grăbi undeva