Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Ruajtja e stilit të dokumentit në formatin json. JSON për fillestarët që përdorin javascript dhe jQuery

Ruajtja e stilit të dokumentit në formatin json. JSON për fillestarët që përdorin javascript dhe jQuery

JSON ka qenë pjesë e standardit ECMAScript që nga viti 1999, kur ECMA përcaktoi funksionin eval (). Ajo u rrit në popullaritet së bashku me suksesin në rritje të Ajax. Fjala JSON shfaqet shumë kur dikush flet për Ajax. JSON dihet se është një tjetër format i të dhënave, që zëvendëson XML dhe që shumë programues e mbështesin atë në mënyrë aktive. Por çfarë është JSON dhe cilat janë përfitimet e tij?

Pse JSON?

Avantazhi i JSON është se ai njihet nga JavaScript. Nuk ka nevojë të analizohet dokumenti, siç është rasti me XML, për të transferuar të dhëna përmes Internetit.

JSON dhe XML

Përparësitë e JSON:

  • Lehtë për t'u lexuar dhe kuptuar.
  • E thjeshtë për t'u përdorur.

Përparësitë e XML:

  • E zgjerueshme

Si XML ashtu edhe JSON kanë aftësinë për të integruar sasi të mëdha të dhënash në formë binare.

Sintaksa JSON

Komponentët JSON:

  • Objektet: përmbajnë objekte ose atribute.
  • Variablat skalare: numri, vargu, ndryshorja boolean.
  • Array.
  • Vlerat letrare: i pavlefshëm, e vërtetë, i rremë, "varg karakteresh", dhe vlerat numerike.

Nje objekt

Përmban një element ose një listë elementësh, ku secili element përshkruhet si më poshtë:

"emri": "vlera"

Sintaksa e objektit:

(element, element, ....)

Array

Një grup vlerash të ndara me presje.

[vlera, vlera, ....]

Kuptimi

Vlera mund të jetë: objekt, grup, vlerë literale (varg, numër, e vërtetë, i rremë, i pavlefshëm).

Nuk ju nevojitet asgjë tjetër për të krijuar një skedar JSON!

Shembull i skedarit JSON

Një shembull i thjeshtë i strukturës së menusë. V këtë objekt përmban atribute dhe një grup që përfshin objekte të tjera të shiritit të menusë.

("menyja": "Skedari", "komandat": [("titulli": "I ri", "veprim": "CreateDoc"), ("titulli": "Hap", "veprim": "OpenDoc") ("titulli": "Mbyll", "veprim": "CloseDoc")]) Ekuivalenti XML:

Skedari I ri</value> <action>CreateDoc</action> </item> <item> <title>Hapur</value> <action>OpenDoc</action> </item> <item> <title>Mbylle</value> <action>Mbyll Dokumentin</action> </item> </commands> </root> </p><h3><span>Si të përdorni formatin</span></h3> <p>Një skedar JSON ju lejon të ngarkoni të dhëna nga një server ose në një server. Për shembull, ruajtja e përmbajtjes së një formulari që sapo është plotësuar nga përdoruesi. Procesi përfshin tre faza: përpunimi nga shfletuesi, përpunimi nga serveri dhe shkëmbimi i të dhënave ndërmjet tyre.</p> <h4><span>Ana e klientit (shfletuesi)</span></h4> <p>Kjo pjesë është mjaft e drejtpërdrejtë sepse JSON është pjesë e përkufizimit JavaScript. Përmbajtja e skedarit ose të dhënat përcaktuese u caktohen variablave dhe ato bëhen objekte programi.</p> <h4>Pjesa e serverit</h4> <p>Skedari JSON përdoret nga gjuhë të ndryshme programimi, duke përfshirë PHP dhe Java, falë pranisë së analizuesve që ju lejojnë të merrni përmbajtje dhe madje ta konvertoni atë në klasa dhe atribute gjuhësore. Faqja JSON përmban analizues për shumë gjuhë programimi.</p> <h4>Shkëmbimi i të dhënave</h4> <ul><li><span>duke përdorur XMLHttpRequest.</span></li> </ul><p>Skedari JSON po përpunohet <a href="https://bumotors.ru/sq/javascript-ispolzovanie-ranee-obyavlennoi-funkcii-v-drugoi-funkcii-funkcii-kak.html">Funksioni JavaScript</a> <i>eval ()</i>... Dërgimi i një skedari në server mund të bëhet duke përdorur XMLHttpRequest. Skedari dërgohet si skedar teksti dhe përpunohet nga analizuesi i gjuhës së programimit që përdoret në server.</p> <h3>Shembull</h3> <p>Kodi XMLHttpKërkesë:</p><p>Var req = ri XMLHttpRequest (); req.hapur ("GET", "file.json", e vërtetë); req.onreadystatechange = myCode; // handler req.send (null);</p><p>Trajtuesi JavaScript:</p><p>Funksioni myCode () (if (req.readyState == 4) (var doc = eval ("(" + req.responseText + ")");)) Përdorimi i të dhënave: var menuName = document.getElementById ("jsmenu"); // duke kërkuar për fushën menuName.value = doc.menu.value; // caktoni një vlerë në fushë Si të merrni të dhëna: doc.commands.title // lexoni vlerën e fushës "title" në grupin doc.commands.action // lexoni vlerën e fushës "action" në varg</p> <p>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.</p> <p>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.</p> <blockquote><p>JSON ( <i>anglisht Shënimi i objektit në JavaScript</i>) Ë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ë <a href="https://bumotors.ru/sq/csv-fail-konvertirovat-v-xls-import-i-eksport-tekstovyh-failov-v.html">formatet e tekstit</a> JSON është i lehtë për t'u lexuar nga njerëzit.</p> <p>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 <a href="https://bumotors.ru/sq/emodzi-smaily-skopirovat-cvetnye-vse-smaily-emoji-kody-simvoly.html">kod i gatshëm</a> për të krijuar dhe përpunuar të dhëna në formatin JSON.</p> <p>Përfitimet praktike të përdorimit të JSON zbulohen duke përdorur <a href="https://bumotors.ru/sq/ajax-chto-eto-takoe-vliyanie-na-seo-preimushchestva-i-nedostatki-tehnologii.html">Teknologjitë AJAX</a>... 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.</p> </blockquote> <p>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.</p> <h3>Pamja e të dhënave JSON</h3> <p>JSON mbështet të gjitha formatet kryesore të të dhënave: vargjet, numrat, vlerat boolean, si dhe vargjet dhe objektet (çelësi: kombinimet e vlerave, të ndara me presje dhe të mbyllura në <a href="https://bumotors.ru/sq/calculator-with-curly-and-square-brackets-the-complexity-of-calculating-school-examples.html">mbajtëset</a>).</p> <p>Këtu është një shembull i paraqitjes së të dhënave në formatin JSON:</p><p>("id": "1", "emri": "ivan", "vendi": "Rusia", "zyra": ["yandex", "menaxhimi"])</p><p>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".</p> <p>Le të japim një shembull më shumë. Faqja ka një formë <a href="https://bumotors.ru/sq/primenenie-operacionnyh-usilitelei-onlain-proverka-raboty-v-proteus-polozhitelnaya-obratnaya-svyaz.html">reagime</a> 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.</p> <p>Një shembull i një përgjigje gabimi në formatin JSON:</p><p>("gabim": "1", "kodi i gabimit": ["empty_pers", "empty_mail", "empty_phone", "empty_letter", "empty_scode"])</p><p>Që do të thotë, për shembull:</p> <ul><li>Duhet të plotësoni fushën "Personi i kontaktit".</li> <li>Duhet të plotësoni fushën "E-mail".</li> <li>Duhet të plotësoni fushën "Telefon".</li> <li>Shkruani mesazhin tuaj</li> <li>Është e nevojshme të plotësoni fushën "Numri në foto"</li> </ul><p>Nëse nuk ka gabime, atëherë përgjigja kthehet:</p><p>("gabim": "0")</p><p>Kjo thotë për dërgimin e suksesshëm të të dhënave.</p> <p>Në PHP, zgjerimi JSON përdoret për të përfaqësuar të dhënat në formatin JSON. V <a href="https://bumotors.ru/sq/neskolko-versii-php-i-obnovlenie-php-v-isp-manager-kak-izmenit-ili-obnovit.html">Versionet PHP</a> Mbështetja JSON më e vjetër se 5.2.0 është e integruar në thelbin, në më shumë <a href="https://bumotors.ru/sq/kak-ustanovit-na-aifon-rannyuyu-versiyu-kak-vernut-predydushchuyu-versiyu-ios.html">versionet e hershme</a> duhet të lidhen me skenarin tuaj <a href="https://bumotors.ru/sq/kak-pochistit-sistemu-kompyutera-kak-pochistit-kompyuter-ot.html">skedar shtesë</a> me funksione.</p> <p>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 ().</p> <h3>Konvertimi i të dhënave në formatin JSON</h3>$ json_data = grup ("id" => 1, "emri" => "ivan", "vend" => "Rusi", "zyre" => grup ("yandex", "menaxhimi")); echo json_encode ($ json_data); <h3>Kthimi i konvertimit të të dhënave nga formati JSON</h3>$ json_string = "(" id ": 1," emri ":" ivan "," shteti ":" Rusi "," zyra ": [" yandex "," menaxhimi "])"; $ obj = json_dekodi ($ json_string); <p>Tani $ obj do të përmbajë <a href="https://bumotors.ru/sq/sozdanie-i-razbor-dannyh-formata-json-v-php-vid-dannyh-v-formate-json.html">Të dhënat JSON</a> përkthyer në një objekt PHP, të cilit mund t'i qaseni si kjo:</p><p>Echo $ obj-> emri; // Do të shfaq emrin ivan echo $ obj-> office; // Shfaq kompaninë Yandex</p><p>Siç mund ta shihni, $ obj-> office është një grup.</p><p>Foreach ($ obj-> zyra si $ val) echo $ val;</p><p>Puna me JSON ju lejon të shkëmbeni të dhëna me serverin në të <i>« <a href="https://bumotors.ru/sq/chto-takoe-blog-i-kak-ego-sozdat-plyusy-i-minusy-svoego-bloga.html">formë e pastër</a>» </i>... Nevoja për të dërguar pjesë të rënda të kodit HTML është eliminuar plotësisht.</p> ECMA-262 1999), formati konsiderohet i pavarur nga gjuha dhe mund të përdoret pothuajse me çdo gjuhë programimi. Për shumë gjuhë, ekziston një kod i gatshëm për krijimin dhe manipulimin e të dhënave JSON. <h3>Përdorimi</h3><p>Për shkak të koncizitetit të tij në krahasim me XML, JSON mund të jetë më i përshtatshëm për serializimin e strukturave komplekse. Nëse flasim për aplikacione në internet, në këtë drejtim, është e përshtatshme në detyrat e shkëmbimit të të dhënave si midis shfletuesit dhe serverit (AJAX), ashtu edhe midis vetë serverëve (API).</p><p>Meqenëse formati JSON është një nëngrup i sintaksës <a href="https://bumotors.ru/sq/chto-takoe-yazyk-javascript-globalnye-i-lokalnye-peremennye-tipy.html">Gjuha JavaScript</a> atëherë mund të deserializohet shpejt me funksionin eval () të integruar. Përveç kësaj, është e mundur të futen funksione plotësisht funksionale JavaScript. V <a href="https://bumotors.ru/sq/operator-vybora-if-v-yazyke-c-osnovy-php-cikl-for-primery-ispolzovaniya-logicheskih-operatorov.html">gjuha PHP</a> Që nga versioni 5.2.0, mbështetja JSON përfshihet në bërthamë në formën e funksioneve json_decode () dhe json_encode (), të cilat vetë konvertojnë llojet e të dhënave JSON në llojet përkatëse PHP dhe anasjelltas.</p> <h3>Sintaksë</h3><p>Teksti JSON është (i koduar) një nga dy strukturat:</p><ol><li>Set çiftesh <i>kyç: vlerë</i>... Në gjuhë të ndryshme, kjo zbatohet si një objekt, rekord, strukturë, fjalor, tabelë hash, listë me çelës ose grup shoqërues. Çelësi mund të jetë vetëm një varg, vlera mund të jetë çdo formë.</li> <li>Një grup i renditur vlerash. Në shumë gjuhë, kjo zbatohet si një grup, vektor, listë ose sekuencë.</li> </ol><p>Këto janë struktura universale të të dhënave: si rregull, çdo moderne <span>gjuhë programimi</span> i mbështet ato në një formë ose në një tjetër. Ata shtriheshin brenda <a href="https://bumotors.ru/sq/format-json-primer-i-opisanie-osnovy-raboty-s-json.html">Korniza JSON</a> meqenëse përdoret për shkëmbimin e të dhënave ndërmjet <a href="https://bumotors.ru/sq/kak-sdelat-drugoi-yazyk-na-klaviature-kak-pomenyat-yazyk-na.html">gjuhë të ndryshme</a> programimit.</p><p>Strukturat përdoren si vlera në JSON:</p><ol><li>Një objekt është një grup i parregulluar çelësash: çifte vlerash të mbyllura në kllapa kaçurrelë "()". Çelësi përshkruhet nga një varg, midis tij dhe vlerës ka një simbol ":". Çiftet kryesore-vlera ndahen nga njëri-tjetri me presje.</li> <li>Një grup (njëdimensionale) është një grup i renditur vlerash. Vargu është i mbyllur në kllapa katrore "". Vlerat ndahen me presje.</li> <li>Vlera mund të jetë një varg me citime të dyfishta, numër, objekt, grup, një nga literalet: e vërtetë, e gabuar ose null. Se. strukturat mund të mbivendosen brenda njëra-tjetrës.</li> <li>Një varg është një grup i renditur me zero ose më shumë karaktere unicode, të mbyllura brenda <a href="https://bumotors.ru/sq/kak-izmenit-vid-kavychek-s-pryamyh-na-dvoinye-bazovoe-redaktirovanie.html">citate të dyfishta</a>... Karakteret mund të specifikohen duke përdorur sekuencat e arratisjes duke filluar me një vijë të prapme "\". <p>Vargu është shumë i ngjashëm me llojin e të dhënave me të njëjtin emër në gjuhët C dhe Java. Numri është gjithashtu shumë i ngjashëm me numrin C ose Java, përveç se përdoret vetëm formati dhjetor. Hapësirat mund të futen ndërmjet çdo dy elementi sintaksor.</p> </li> </ol><p>Shembulli i mëposhtëm tregon JSON - një paraqitje e një objekti që përshkruan një person. Objekti përmban fusha vargu të emrit dhe mbiemrit, një objekt që përshkruan adresën dhe një grup që përmban një listë numrash telefoni.</p><p>Teknikat bazë për të punuar me JSON në JavaScript janë:</p><ul><li>JSON.parse - Lexon objekte nga një varg në formatin JSON.</li> <li>JSON.stringify - konverton objektet në një varg JSON, që përdoret kur ju duhet të transferoni të dhëna nga JavaScript përmes rrjetit.</li> </ul><h3>1. Hyrje në metodën JSON.parse</h3><p>Le të krijojmë një aplikacion bazë në internet Tizen dhe ta emërojmë atë <i>json1</i>.</p><p>Prezantoni në dosje <i>index.html</i> kodin e mëposhtëm:</p><p><!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <meta name="description" content="Modeli bazë Tizen i krijuar nga Tizen Web IDE"/> <title>


Oriz. 27.2.

Le të ndryshojmë pak kodin e skenarit tonë:


Oriz. 27.3.

Le të shqyrtojmë një rast më interesant:


Oriz. 27.4.

2. Krijimi i një objekti nga një varg JSON

Ky shembull është huazuar nga http://www.w3schools.com/js/js_validation.asp. Le të krijojmë një projekt json2... Në dosje indeks.tml le të fusim kodin e mëposhtëm.

Krijo një objekt nga JSON String


Oriz. 27.5.

3. Puna me metodën JSON.parse

Shembulli i mëposhtëm përdor JSON.parse për të kthyer një varg JSON në një objekt (projekt json3).

Tizen Web IDE - Tizen - Aplikacioni bazë Tizen


Oriz. 27.6.

4. Puna me funksionet reviver

Funksioni reviver përdoret shpesh për të kthyer përfaqësimin JSON të vargjeve të datave të Organizatës Ndërkombëtare për Standardizim (ISO) në objekte të datës së Koordinuar Universale (UTC). Ky shembull përdor JSON.parse për të deserializuar një varg datash ISO. Funksioni dateReviver kthen objektet e datës për anëtarët të formatuar si vargje datash ISO. Sugjerohet një shembull pak i modifikuar, marrë nga faqja https://msdn.microsoft.com/ru-ru/library/cc836466%28v=VS.94%29.aspx? F = 255 & MSPPError = -2147217396. Le të krijojmë një projekt json4.

Tizen Web IDE - Tizen - Aplikacioni bazë Tizen

Json(JavaScript Object Notation) është një format i lehtë i përfaqësimit të të dhënave bazuar në një nëngrup të sintaksës JavaScript, më konkretisht në fjalë për fjalë vargjeve dhe objekteve. JSON është një alternativë ndaj formateve tradicionale (tekst i thjeshtë ose XML) që përdoren gjatë shkëmbimit të të dhënave midis një serveri dhe një klienti. Ndryshe nga gjuhët në përputhje me XML dhe XML, të cilat kërkojnë analizë, përkufizimet JSON thjesht mund të përfshihen në JavaScript. Formati JSON u propozua nga programuesi Douglas Crockford.

Ndoshta do të vij nga larg, por për të kuptuar me të vërtetë JSON, së pari le të kuptojmë (kujtojmë) sintaksën e vargjeve dhe objekteve në shënimin literal JavaScript.

Vargjet si fjalë për fjalë
Një grup në JavaScript mund të përcaktohet duke përdorur konstruktorin Array, si kjo:

Var aData = Array i ri ("string", true, 43, null);

Në JavaScript, vargjet janë të pashtypura, kështu që ato mund të ruajnë lloje të ndryshme të dhënash. Në shembull, grupi përmban një varg, një boolean, një numër dhe një vlerë null.

Një grup i përshkruar si literal mund të përcaktohet duke përdorur kllapa katrore, brenda - vlerat e elementeve të grupit, të ndara me presje. Kështu do të dukej i njëjti grup, por në shënimin e mirëfilltë:

Var aData = ["string", e vërtetë, 43, null];

Elementet individuale të një grupi mund të adresohen duke specifikuar emrin e grupit dhe numrin e elementit:

Alert (aData); alarmi (aData);

Objektet si fjalëpërfjalë
Objektet në JavaScript përcaktohen duke përdorur konstruktorin Object, si ky:

Var oAuto = Objekti i ri (); oAuto.firm = "Audi"; oAuto.model = "A6"; oAuto.vit = 2008; oAuto.çmimi = 78000;

I njëjti kod, por në shënimin e mirëfilltë do të duket kështu:

Var oAuto = ("firma": "Audi", "model": "A6", "viti": 2008, "çmimi": 78000);

Ky kod krijon një objekt me vetitë e firmës, modelit, vitit dhe çmimit dhe mund të aksesohet si kjo:

Alert (oAuto.model); alarmi (oAuto.vit);

por mund të përdorni gjithashtu sintaksën e vargjeve, duke iu referuar vetive të një objekti në këtë mënyrë:

Alert (oAuto ["model"]); alarmi (oAuto ["viti"]);

Në shënimin e mirëfilltë, përshkrimet e vargjeve dhe objekteve mund të futen brenda njëri-tjetrit, duke krijuar kështu objekt grupi ose grup objektesh... Shikoni këtë kod:

Var aAuto = [("firma": "BMW", "model": "X5", "viti": 2007, "çmimi": 99000), ("firma": "Audi", "model": "A6" , "viti": 2008, "çmimi": 78000), ("firma": "Volkswagen", "model": "Touareg 7L", "viti": 2006, "çmimi": 45000)];

Ne kemi krijuar një grup aAuto që përmban tre objekte. Duke kombinuar sintaksën e hyrjes në vargje me sintaksën e aksesit të objekteve, le të përpiqemi të marrim vitin e prodhimit të makinës së dytë:

Alert (aAuto.vit); // merrni 2008

Mund të bëni të kundërtën dhe të përshkruani një objekt vargjesh:

Var oAuto = ("firma": ["BMW", "Audi", "Volkswagen"], "modeli": ["X5", "A6", "Touareg 7L"], "viti" :, "çmimi": );

në këtë rast, ne i referohemi së pari objektit dhe më pas grupit brenda tij:

Alert (oAuto.year); // merrni 2008

Këtu është një parathënie kaq e gjatë, por tani do të jetë shumë më e qartë për të bërë me të. Json

Json- një kombinim i grupeve dhe objekteve dhe është menduar vetëm për ruajtjen e të dhënave. Rrjedhimisht, Json nuk mund të ketë variabla dhe nuk lejon asnjë operacion mbi to. Le të përpiqemi të shkruajmë shembullin e mëparshëm duke përdorur sintaksën Json:

("firma": ["BMW", "Audi", "Volkswagen"], "modeli": ["X5", "A6", "Touareg 7L"], "viti" :, "çmimi" :)

shënim se emri i ndryshores dhe presja me pikë mungojnë. Transferimi i një objekti të tillë duke përdorur protokollin HTTP do të jetë shumë i shpejtë, pasi përmban një minimum karakteresh. Pas marrjes së të dhënave të tilla në anën e klientit dhe shkrimit të tyre në një variabël (për shembull sData), marrim një varg informacioni.
shënim: saktësisht një varg, jo një objekt ose një objekt me vargje të mbivendosur fare. Konvertoni një varg në një objekt duke përdorur funksionin eval ().

Var oAuto = eval ("(" + sData + ")");

Kjo do të rezultojë në objektin që përshkruam pak më lart.

JSON mbi XML
Pra, cili është avantazhi i JSON mbi XML?

Këtu po flasim ekskluzivisht për avantazhet dhe disavantazhet vetëm nga pikëpamja e organizimit të shkëmbimit të të dhënave në ueb.

Fakti që XML rezulton të jetë shumë i tepërt kur krahasohet me JSON. Le ta shohim këtë me një shembull të thjeshtë. Ne përfaqësojmë të njëjtat të dhëna në formatin XML dhe në formatin JSON.

Bmw X5 2007 99000 Audi A6 2008 78000 Volkswagen Touareg 7L 2006 45000

kështu duket në formatin XML, dhe më poshtë - në formatin JSON:

("përgjithshme": ("makina": [("firma": "BMW", "modeli": "X5", "viti": 2007, "çmimi": 99000), ("firma": "Audi", "model": "A6", "viti": 2008, "çmimi": 78000), ("firma": "Volkswagen", "modeli": "Touareg 7L", "viti": 2006, "çmimi": 45000 )]))

Duke përdorur Formati JSON fitimi do të jetë 42 bajt, dhe duke përjashtuar hapësirat dhe madje 86 bajtë. Dhe nëse kujtojmë gjithashtu se të dhënat në formatin JSON nuk kërkojnë analizë shtesë nga ana e klientit, avantazhi i JSON ndaj XML për sa i përket transferimit të të dhënave nga serveri te klienti bëhet i dukshëm ...

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ë që nuk ka nevojë të lidhni shtesa shtesë. Formati i të dhënave JSON kuptohet mirë nga njerëzit. Përveç kësaj, ky lloj 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

Mund të dërgoni të dhëna në formatin JSON në dy mënyra: formoni një kërkesë GET ose 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 që nga PHP 5, mund të përdorni konstanten 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.

JSON dha konstante 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