Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Këshilla
  • Gjenerimi dhe analizimi i të dhënave JSON në PHP. Pamja e të dhënave JSON

Gjenerimi dhe analizimi i të dhënave JSON në PHP. Pamja e të dhënave JSON

funksioni getData (id) ($ .ajax ((url: "disa url", crossDomain: e vërtetë, lloji: "post", të dhënat: (id: id), suksesi: funksioni (të dhënat) (var json = jQuery.parseJSON ( të dhëna); alarm (të dhëna);)));

$ name, "clubID" => $ clubID, "lID" => $ lID, "sEmri" => $ sName, "description" => $ desc)); jehonë $ json; ?>

Paralajmërimet Javascript në formën, ... Çfarë nuk duhet të jetë në këtë mënyrë ...

Mos e përsëritni ID-në e $ në PHP-në tuaj. Përdorni vetinë jQuery dataType ajax dhe vendoseni në json. Përdorni analizuesin e paracaktuar të javascript json.

provoni të njoftoni json dhe jo të dhënat?

Javascript kthen një objekt sepse në fakt po e paralajmëroni objektin. Provoni alarmin (data.name);

ose alarm (data.clubID); , kjo do të funksionojë.

Duhet të specifikoni llojin e të dhënave që po kërkoni kërkesë ajax përndryshe jQuery do të zbulojë në mënyrë inteligjente bazuar në llojin MIME. Nëse thirrja ajax merr të dhëna json, do t'i përdorë ato si Objekti JavaScript kështu që ju merrni këtë paralajmërim.

Është e drejtë.

JSON është një objekt. aka Shënimi i objektit në Javascript... Ky duhet të jetë vetëm një rast. Ai duhet të përmbajë të dhënat tuaja. Provoni të dhënat. *.

Nga rruga, nëse nuk i pastroni të dhënat që vijnë nga përdoruesit tuaj përpara se t'i përdorni me ndonjë pyetje SQL, kjo do të shkaktojë probleme.

Shihni atë në veprim me një shembull bazë:

// $ _POST ["id"] = "" OSE 1 "" $ result = mysql_query ("ZGJEDH * NGA anëtari i klubit WHERE clubID =" ". $ ID." "");

Kërkimi juaj tani

ZGJIDH * NGA anëtari i klubit WHERE clubID = "" OSE 1 ""

Sepse 1 është gjithmonë e vërtetë, tani unë mund të marr të gjithë tryezën tuaj të klubit. pershendetje.

Edhe nëse parseJSON kthen një objekt, ekzekutimi console.log duhet të tregojë se cili është një grup objekti

Thirrja .ajax () do të, nëse nuk specifikohet lloji i të dhënave, "është e arsyeshme të merret me mend" se çfarë po kthen faqja e kërkuar.
Në rastin e JSON, ai do t'ia kalojë objektin JavaScript funksionit të suksesit.

Pas shqyrtimit të pyetjes(ve) tuaj, besoj se e kuptoj se çfarë doni të thoni. Ajo që prisni është një objekt (kërkoni me duke përdorur SQL siç u tha shumë e pasigurt) me 5 prona, emri, ID e klubit, lID, emri dhe përshkrimi. Megjithatë, duket sikur po ktheheni, a janë linja të shumta me dy veti?
Ju thoni se ndërkohë që jehona e skriptit php ka vlerat e sakta(një rresht), por JSON merr vlera të shumta (/ rreshta).
Jeni i sigurt që PHP po merr ID-në e saktë nga telefonata AJAX?

Në këtë artikull, unë dua të flas për formatin e shkëmbimit të të dhënave tekstuale - JSON, domethënë për punën me këtë format në PHP.

JSON është një format kompakt i të dhënave tekstuale. Mund të përdoret si në shërbimet e transmetimit të të dhënave në Internet ashtu edhe për ruajtjen e informacionit në një formë të strukturuar.

JSON ( anglisht Shënimi i objektit në JavaScript) Është një format i shkëmbimit të të dhënave tekstuale i bazuar në JavaScript dhe i përdorur zakonisht me këtë gjuhë të veçantë. Si shumë të tjerë formatet e tekstit JSON është i lehtë për t'u lexuar nga njerëzit.

Pavarësisht origjinës së tij nga JavaScript (më saktë, nga një nëngrup i standardit ECMA-262 të vitit 1999), formati konsiderohet i pavarur nga gjuha dhe mund të përdoret pothuajse me çdo gjuhë programimi. Për shumë gjuhë ka kod i gatshëm për të krijuar dhe përpunuar të dhëna në Formati JSON.

Përfitimet praktike duke përdorur JSON hapet kur përdoret Teknologjitë AJAX... JSON është më konciz dhe më i lexueshëm se XML, dhe është vendas në Javascript. Përveç kësaj, është e mundur të futni funksione plotësisht funksionale në kodin JSON.

Po, është në teknologjinë AJAX, për mendimin tim, që është aplikimi kryesor i saj. Meqenëse teknologjia AJAX përfshin dërgimin e një kërkese klienti në server. Më tej në server kërkesa përpunohet dhe rezultati i dërgohet klientit si përgjigje.

Pamja e të dhënave JSON

JSON mbështet të gjitha formatet kryesore të të dhënave: vargjet, numrat, booleans, si dhe vargje dhe objekte (çelës: kombinime vlerash, të ndara me presje dhe të mbyllura në kllapa kaçurrelë).

Këtu është një shembull i paraqitjes së të dhënave në formatin JSON:

("id": "1", "emri": "ivan", "vendi": "Rusia", "zyra": ["yandex", "menaxhimi"])

Le të shohim se çfarë mund të përcjellë ky varg: një person me emrin "ivan", nën identifikuesin "1", i cili jeton në vendin "Rusia", punon për kompaninë "yandex" në departamentin "menaxhimi".

Le të japim një shembull më shumë. Faqja ka një formë reagime mundësuar nga teknologjia AJAX. Vizitori plotëson informacionin, pastaj dërgohet në server për verifikim, nëse nuk gjenden gabime, informacioni ruhet në bazën e të dhënave dhe dërgohet një përgjigje për ruajtjen e suksesshme. Por nëse gjenden gabime, atëherë kthehet një përgjigje me llojet e gabimeve.

Një shembull i një përgjigje gabimi në formatin JSON:

("gabim": "1", "kodi i gabimit": ["empty_pers", "empty_mail", "empty_phone", "empty_letter", "empty_scode"])

Që do të thotë, për shembull:

  • Duhet të plotësoni fushën "Personi i kontaktit".
  • Duhet të plotësoni fushën "E-mail".
  • Duhet të plotësoni fushën "Telefon".
  • Shkruani mesazhin tuaj
  • Është e nevojshme të plotësoni fushën "Numri në foto"

Nëse nuk ka gabime, atëherë përgjigja kthehet:

("gabim": "0")

Kjo thotë për dërgimin e suksesshëm të të dhënave.

Në PHP, zgjerimi JSON përdoret për të përfaqësuar të dhënat në formatin JSON. Versionet PHP më të vjetra se 5.2.0 kanë mbështetje JSON të integruar në thelbin, më shumë versionet e hershme duhet të lidhen me skenarin tuaj skedar shtesë me funksione.

Pra, në PHP, dy funksione janë përgjegjës për të punuar me të dhënat në formatin JSON: json_encode () dhe json_decode ().

Konvertimi i të dhënave në formatin JSON

$ json_data = grup ("id" => 1, "emri" => "ivan", "vend" => "Rusi", "zyre" => grup ("yandex", "menaxhimi")); echo json_encode ($ json_data);

Kthimi i konvertimit të të dhënave nga formati JSON

$ json_string = "(" id ": 1," emri ":" ivan "," shteti ":" Rusi "," zyra ": [" yandex "," menaxhimi "])"; $ obj = json_dekodi ($ json_string);

Tani $ obj do të përmbajë të dhëna JSON të përkthyera në një objekt PHP, të cilit mund t'i qaseni si më poshtë:

Echo $ obj-> emri; // Do të shfaq emrin ivan echo $ obj-> office; // Shfaq kompaninë Yandex

Siç mund ta shihni, $ obj-> office është një grup.

Foreach ($ obj-> zyra si $ val) echo $ val;

Puna me JSON ju lejon të shkëmbeni të dhëna me serverin në të « formë e pastër» ... Nevoja për të dërguar pjesë të rënda të kodit HTML është eliminuar plotësisht.

JSON (JavaScript Object Notation) është një format për shkëmbimin e të dhënave në formë teksti... Ju lejon të transferoni struktura komplekse të të dhënave në formë të serializuar. Ky format i transferimit të të dhënave është bërë aq i popullarizuar sa funksionet për përpunimin e të dhënave në këtë format janë shtuar në bërthamën PHP që nga versioni 5.2.0. Kjo do të thotë se nuk ka nevojë për t'u lidhur shtesa shtesë... Formati i të dhënave JSON kuptohet mirë nga njerëzit. Për më tepër lloji i dhënë shkëmbimi i të dhënave përdoret gjerësisht midis shërbimeve të ndryshme API. Dhe me zhvillimin e saktë të algoritmeve për shkëmbimin e informacionit, mund të merrni një fitim me shpejtësi shumë të lartë sesa, për shembull, kur punoni me të dhëna në formatin XML.

Dërgimi i të dhënave

Ka dy mënyra për të dërguar të dhëna në formatin JSON: formoni një GET ose Kërkesa POST me të dhëna të koduara të vendosura në një variabël GET ose POST, ose vendosni të dhënat në trupin e dokumentit. Në praktikë, zakonisht përdoret opsioni i dytë.

Funksionet e mëposhtme kërkohen për të dërguar të dhëna:

  • varg json_encode(vlera e përzier [, opsionet int = 0])

    Parametri i vlerës është të dhënat që duhet të kodohen. Çdo lloj mbështetet përveç llojit burim... Parametri i opsioneve përmban një bitmask të vlerave të mundshme të ofruara (shih tabelën për konstantet e dhëna JSON).

  • burim stream_context_create (])

    Ky funksion synon të krijojë dhe të kthejë një kontekst transmetimi me opsionet e specifikuara në parametrin e opsioneve. Parametri i opsioneve opsionale duhet të jetë i një lloji të grupit asociativ. Fillimisht është bosh. Parametri i dytë opsional i parametrave duhet të jetë gjithashtu një grup shoqërues në formatin $ data [‘emri’] = vlera.

  • varg file_get_contents(emri i skedarit të vargut [, bool use_include_path [, konteksti i burimit [, int offset [, int maxlen]]]])

    Përdorimi i këtij funksioni ju lejon të merrni përmbajtjen e një skedari si një varg. Parametri i emrit të skedarit është emri i skedarit që duhet lexuar. Në parametrin use_include_path duke filluar me Versionet PHP 5 mund të përdorni një konstante FILE_USE_INCLUDE_PATH për të gjetur skedarin në shtegun e përfshirjes. Parametri i kontekstit përfaqëson një burim konteksti të krijuar duke përdorur stream_context_create (). Në rast të një përpjekjeje të dështuar për të hapur skedarin, vlera do të kthehet i rremë... Parametri i kompensimit përmban kompensimin nga i cili fillon leximi i të dhënave. Parametri maxlen specifikon madhësinë e të dhënave të marra.

    shënim: Offset nuk është specifikuar kur punoni me transmetime në distancë.

Më poshtë është një shembull i dërgimit të të dhënave në formatin JSON:

// Të dhënat për të dërguar kërkesën $ = grup ("StartDate" => "2013-10-10", "Data e Fundit" => "2013-10-10", "IDS" => grup (1,2,3,4 , 5,6,7)); // Specifikoni opsionet për kontekstin e transmetimit $ options = grup ("http" => grup ("metod" => "POST", "header" => "Content-Type: application / json; charset = utf-8 \ r \ n "," përmbajtje "=> json_encode ($ kërkesë))); // Krijo kontekstin e transmetimit $context = stream_context_create (opsionet $); // Dërgimi i të dhënave dhe marrja e rezultatit echo file_get_contents ("http://test.ru/json.php", 0, $ kontekst);

Ai përdor një strukturë të improvizuar të dhënash të përbërë nga datat e fillimit dhe mbarimit dhe një grup numrash për disa regjistrime të kushtëzuara. Vini re se në kokën e kërkesës Lloji i përmbajtjes lloji është "aplikacion / json".

Marrja e të dhënave

Për të marrë të dhënat e transmetuara në mënyrën e përshkruar më sipër, kërkohet të lexohen të dhënat nga rryma hyrëse " php: // hyrje”.

Funksionet e përdorura për pranimin e të dhënave:

  • të përziera json_dekodi(vargu json [, bool assoc = false [, thellësia int = 512 [, opsionet int = 0]]])

    Ky funksion deshifron një varg JSON. Parametri json specifikon vargun për dekodim. Parametri assoc kontrollon nëse të dhënat e kthyera konvertohen në një grup shoqërues. Nëse ekziston një nevojë e tillë, atëherë duhet të specifikoni si vlerën e këtij parametri e vërtetë... Parametri i thellësisë tregon thellësinë e rekursionit. Dhe parametri i fundit i katërt, opsionet, përmban bitmaskun e opsioneve për dekodim. Aktualisht mbështetet vetëm JSON_BIGINT_AS_STRING(Numrat e plotë të mëdhenj konvertohen në float si parazgjedhje)

  • burim hap(emri i skedarit të vargut, modaliteti i vargut [, bool use_include_path [, konteksti i burimit]])

    Hap një skedar dhe kthen një përshkrues skedari. Parametri i emrit të skedarit është një burim i emërtuar që tregon një skedar. Parametri i modalitetit specifikon llojin e aksesit në skedar (shih tabelën me listën e mënyrave të mundshme për fopen ()). Pastaj janë dy parametrat opsionalë këto janë: use_include_path dhe kontekst. Kur vendosni parametrin use_include_path në e vërtetë ose 1 dhe me kusht që të jepet burimi i emërtuar rrugë relative, skedari që do të hapet do të kërkohet në listën e drejtorive të përdorura nga funksionet përfshijnë dhe kërkojnë... Në praktikë, ky parametër praktikisht nuk përdoret. Parametri i kontekstit përdoret për të specifikuar kontekstin e burimit.

  • varg stream_get_contents(trajtimi i burimit [, int maxlen = -1 [, int offset = -1]])

    Ky funksion ju lejon të merrni përmbajtjen e një transmetimi si një varg. Parametri i dorezës është një burim thread. Parametri maxlen përmban shuma maksimale bajt për të lexuar. Si parazgjedhje, është vendosur në -1, që tregon se të gjitha të dhënat janë marrë. Parametri i kompensimit përmban kompensimin nga i cili fillon leximi i të dhënave. Si parazgjedhje, është vendosur gjithashtu në -1, që do të thotë se leximi do të bëhet nga pozicioni fillestar.

Më poshtë është një shembull i marrjes së të dhënave në format JSON në anën e serverit:

// Hapni rrymën hyrëse për të lexuar $ f = fopen ("php: // input", "r"); // Merrni përmbajtjen e transmetimit $ të dhëna = stream_get_contents ($ f); nëse ($ të dhëna) (// Kodi i përpunimit print_r (json_dekodi ($ të dhëna));)

Struktura e të dhënave që rezulton:

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

shënim: është e nevojshme të merret parasysh fakti që për të punuar me formatin JSON, të dhënat duhet të jenë në kodim utf-8.

Siguruar nga konstante JSON për funksionin json_encode ().

JSON_HEX_TAG (numër i plotë) Të gjitha janë të koduara në \ u003C dhe \ u003E. Në dispozicion që nga PHP 5.3.0.
JSON_HEX_AMP (numër i plotë) Të gjitha & janë të koduara në \ u0026. Në dispozicion që nga PHP 5.3.0.
JSON_HEX_APOS (numër i plotë) Të gjithë karakteret janë të koduar në \ u0027. Në dispozicion që nga PHP 5.3.0.
JSON_HEX_QUOT (numër i plotë) Të gjithë karakteret janë të koduar në \ u0022. Në dispozicion që nga PHP 5.3.0.
JSON_FORCE_OBJECT (numër i plotë) Emitoni një objekt në vend të një grupi kur përdorni një grup jo-shoqërues. Kjo është e dobishme kur programi marrës ose kodi pret një objekt, ose grupi është bosh. Në dispozicion që nga PHP 5.3.0.
JSON_NUMERIC_CHECK (numër i plotë) Kodoni vargjet që përmbajnë numra si numra. Në dispozicion që nga PHP 5.3.3.
JSON_BIGINT_AS_STRING (numër i plotë) Kodifikon numra të plotë të mëdhenj si ekuivalentë të vargut të tyre. Në dispozicion që nga PHP 5.4.0.
JSON_PRETTY_PRINT (numër i plotë) Përdorni karaktere të hapësirës së bardhë në të dhënat e kthyera për ta formatuar. Në dispozicion që nga PHP 5.4.0.
JSON_UNESCAPED_SLASHES (numër i plotë) Mos shpëto /. Në dispozicion që nga PHP 5.4.0.
JSON_UNESCAPED_UNICODE (numër i plotë) Mos kodoni multibajtë Karakteret e Unicode(si parazgjedhje ato janë të koduara si \ uXXXX). Në dispozicion që nga PHP 5.4.0.

Lista e mënyrave të mundshme për fopen () duke përdorur modalitetin

'R' Hap skedarin vetëm për lexim; vendos treguesin në fillim të skedarit.
'R +' Hap një skedar për lexim dhe shkrim; vendos treguesin në fillim të skedarit.
'W' Hap një skedar vetëm për shkrim; vendos treguesin në fillim të skedarit dhe shkurton skedarin në gjatësi zero. Nëse skedari nuk ekziston, ai përpiqet ta krijojë atë.
'W +' Hap një skedar për lexim dhe shkrim; vendos treguesin në fillim të skedarit dhe shkurton skedarin në gjatësi zero. Nëse skedari nuk ekziston, ai përpiqet ta krijojë atë.
'A' Hap një skedar vetëm për shkrim; vendos treguesin në fund të skedarit. Nëse skedari nuk ekziston, ai përpiqet ta krijojë atë.
'A +' Hap një skedar për lexim dhe shkrim; vendos treguesin në fund të skedarit. Nëse skedari nuk ekziston, ai përpiqet ta krijojë atë.
'X' Krijon dhe hap vetëm për shkrim; vendos treguesin në fillim të skedarit. Nëse skedari ekziston tashmë, fopen () do të dështojë, do të kthejë FALSE dhe do të lëshojë një gabim të nivelit E_WARNING. Nëse skedari nuk ekziston, ai do të përpiqet ta krijojë atë. Kjo është e barabartë me specifikimin e flamujve O_EXCL | O_CREAT për thirrjen e brendshme të sistemit të hapur (2).
'X +' Krijon dhe hap për lexim dhe shkrim; përndryshe ka të njëjtën sjellje si 'x'.
'C' Hap një skedar vetëm për shkrim. Nëse skedari nuk ekziston, atëherë ai krijohet. Nëse skedari ekziston, atëherë ai nuk është i shkurtuar (ndryshe nga 'w'), dhe një thirrje në këtë funksion nuk shkakton një gabim (siç është rasti me 'x'). Treguesi i skedarit do të vendoset në fillim të skedarit. Kjo mund të jetë e dobishme nëse dëshironi të kyçni një skedar (shih flock ()) përpara se të ndryshoni, pasi përdorimi i 'w' mund ta shkurtojë skedarin përpara se të merret bllokimi (nëse dëshironi të shkurtoni skedarin, mund të përdorni ftruncate () pas një kërkesë për bllokim).
'C +' Hap një skedar për lexim dhe shkrim; përndryshe ka të njëjtën sjellje si 'c'.

Artikujt kryesorë të lidhur