Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Pohranjivanje stila dokumenta u json formatu. JSON za početnike koji koriste javascript i jQuery

Pohranjivanje stila dokumenta u json formatu. JSON za početnike koji koriste javascript i jQuery

JSON je dio standarda ECMAScript od 1999. godine, kada je ECMA definirala funkciju eval za otkrivanje formata (). Porastao je u popularnosti zajedno sa rastućim uspjehom Ajaxa. Reč JSON se često pojavljuje kada neko priča o Ajaxu. Poznato je da je JSON još jedan format podataka, da zamjenjuje XML i da ga mnogi programeri aktivno podržavaju. Ali šta je JSON i koje su njegove prednosti?

Zašto JSON?

Prednost JSON-a je u tome što ga JavaScript prepoznaje. Nema potrebe za raščlanjivanjem dokumenta, kao što je slučaj sa XML-om, za prijenos podataka preko Interneta.

JSON i XML

JSON prednosti:

  • Lako za čitanje i razumijevanje.
  • Jednostavan za upotrebu.

XML prednosti:

  • Proširivi

I XML i JSON imaju mogućnost integracije velikih količina podataka u binarnom obliku.

JSON sintaksa

JSON komponente:

  • Objekti: sadrže objekte ili atribute.
  • Skalarne varijable: broj, niz, logička varijabla.
  • Niz.
  • Doslovne vrijednosti: null, istinito, false, "niz znakova", i numeričke vrijednosti.

Objekt

Sadrži element ili listu elemenata, gdje je svaki element opisan na sljedeći način:

"ime": "vrijednost"

Sintaksa objekta:

(element, element, ....)

Niz

Skup vrijednosti odvojen zarezima.

[vrijednost, vrijednost, ....]

Značenje

Vrijednost može biti: objekt, niz, literalna vrijednost (niz, broj, istinito, false, null).

Ne treba vam ništa drugo da kreirate JSON fajl!

Uzorak JSON fajla

Jednostavan primjer strukture menija. V ovaj objekat sadrži atribute i niz koji uključuje druge objekte trake menija.

("meni": "Datoteka", "naredbe": [("naslov": "Novo", "akcija": "KreirajDoc"), ("naslov": "Otvori", "akcija": "OpenDoc"), ("title": "Zatvori", "action": "CloseDoc")]) XML ekvivalent:

File Novo</value> <action>CreateDoc</action> </item> <item> <title>Otvori</value> <action>OpenDoc</action> </item> <item> <title>Zatvori</value> <action>CloseDoc</action> </item> </commands> </root> </p><h3><span>Kako koristiti format</span></h3> <p>JSON fajl vam omogućava da otpremite podatke sa servera ili na server. Na primjer, spremanje sadržaja obrasca koji je korisnik upravo popunio. Proces uključuje tri faze: obradu od strane pretraživača, obradu od strane servera i razmjenu podataka između njih.</p> <h4><span>Klijentska strana (preglednik)</span></h4> <p>Ovaj dio je prilično jednostavan jer je JSON dio JavaScript definicije. Sadržaj datoteke ili definirajući podaci se dodjeljuju varijablama i one postaju programski objekti.</p> <h4>Serverski dio</h4> <p>JSON datoteku koriste različiti programski jezici, uključujući PHP i Javu, zahvaljujući prisustvu parsera koji vam omogućavaju da primate sadržaj, pa čak i da ga konvertujete u jezičke klase i atribute. JSON stranica sadrži parsere za mnoge programske jezike.</p> <h4>Razmjena podataka</h4> <ul><li><span>koristeći XMLHttpRequest.</span></li> </ul><p>JSON fajl se obrađuje <a href="https://bumotors.ru/bs/javascript-ispolzovanie-ranee-obyavlennoi-funkcii-v-drugoi-funkcii-funkcii-kak.html">JavaScript funkcija</a> <i>eval ()</i>... Slanje datoteke na server može se obaviti pomoću XMLHttpRequest. Datoteka se šalje kao tekstualna datoteka i obrađuje je parser programskog jezika koji se koristi na serveru.</p> <h3>Primjer</h3> <p>XMLHttpRequest kod:</p><p>Var req = novi XMLHttpRequest (); req.open ("GET", "file.json", istina); req.onreadystatechange = myCode; // rukovalac req.send (null);</p><p>JavaScript rukovalac:</p><p>Funkcija myCode () (if (req.readyState == 4) (var doc = eval ("(" + req.responseText + ")");)) Upotreba podataka: var menuName = document.getElementById ("jsmenu"); // tražimo polje menuName.value = doc.menu.value; // dodijeli vrijednost polju Kako dobiti podatke: doc.commands.title // pročitaj vrijednost polja "title" u nizu doc.commands.action // pročitaj vrijednost polja "action" u polju niz</p> <p>U ovom članku želim govoriti o formatu za razmjenu tekstualnih podataka - JSON, odnosno o radu sa ovim formatom u PHP-u.</p> <p>JSON je kompaktni format tekstualnih podataka. Može se koristiti i u uslugama prijenosa podataka na Internetu i za pohranjivanje informacija u strukturiranom obliku.</p> <blockquote><p>JSON ( <i>engleski JavaScript notacija objekata</i>) Je format za razmjenu tekstualnih podataka zasnovan na JavaScript-u i koji se obično koristi sa ovim jezikom. Kao i mnogi drugi <a href="https://bumotors.ru/bs/csv-fail-konvertirovat-v-xls-import-i-eksport-tekstovyh-failov-v.html">tekstualni formati</a> Ljudi lako čitaju JSON.</p> <p>Uprkos svom poreklu iz JavaScript-a (tačnije, iz podskupa standarda ECMA-262 iz 1999.), format se smatra nezavisnim od jezika i može se koristiti sa skoro svim programskim jezikom. Za mnoge jezike postoji <a href="https://bumotors.ru/bs/emodzi-smaily-skopirovat-cvetnye-vse-smaily-emoji-kody-simvoly.html">spreman kod</a> za kreiranje i obradu podataka u JSON formatu.</p> <p>Praktične prednosti korištenja JSON-a otkrivaju se korištenjem <a href="https://bumotors.ru/bs/ajax-chto-eto-takoe-vliyanie-na-seo-preimushchestva-i-nedostatki-tehnologii.html">AJAX tehnologije</a>... JSON je sažetiji i čitljiviji od XML-a i izvorni je za Javascript. Osim toga, moguće je ubaciti potpuno funkcionalne funkcije u JSON kod.</p> </blockquote> <p>Da, upravo je u AJAX tehnologiji, po mom mišljenju, njena glavna primjena. Budući da AJAX tehnologija uključuje slanje klijentskog zahtjeva na server. Dalje se na serveru obrađuje zahtjev, a rezultat se šalje kao odgovor klijentu.</p> <h3>JSON prikaz podataka</h3> <p>JSON podržava sve glavne formate podataka: nizove, brojeve, logičke vrijednosti, kao i nizove i objekte (ključ: kombinacije vrijednosti, odvojene zarezima i zatvorene u <a href="https://bumotors.ru/bs/calculator-with-curly-and-square-brackets-the-complexity-of-calculating-school-examples.html">proteze</a>).</p> <p>Evo primjera predstavljanja podataka u JSON formatu:</p><p>("id": "1", "ime": "ivan", "zemlja": "Rusija", "kancelarija": ["yandex", "menadžment"])</p><p>Hajde da vidimo šta ovaj niz može da prenese: osoba po imenu "ivan", pod identifikatorom "1", koja živi u zemlji "Rusija", radi za kompaniju "yandex" u odeljenju "menadžment".</p> <p>Dajemo još jedan primjer. Stranica ima obrazac <a href="https://bumotors.ru/bs/primenenie-operacionnyh-usilitelei-onlain-proverka-raboty-v-proteus-polozhitelnaya-obratnaya-svyaz.html">povratne informacije</a> pokreće AJAX tehnologija. Posjetilac popunjava podatke, zatim ih šalje serveru na verifikaciju, ako se ne pronađu greške, podaci se pohranjuju u bazu podataka i šalje se odgovor o uspješnom pohranjivanju. Ali ako se pronađu greške, onda se vraća odgovor s tipovima greške.</p> <p>Primjer odgovora na grešku u JSON formatu:</p><p>("error": "1", "errorcode": ["empty_pers", "empty_mail", "empty_phone", "empty_letter", "empty_scode"])</p><p>Što znači, na primjer:</p> <ul><li>Morate popuniti polje "Kontakt osoba".</li> <li>Morate popuniti polje "E-mail".</li> <li>Morate popuniti polje "Telefon".</li> <li>Unesite svoju poruku</li> <li>Potrebno je popuniti polje "Broj na slici"</li> </ul><p>Ako nema grešaka, onda se vraća odgovor:</p><p>("greška": "0")</p><p>To govori o uspješnom slanju podataka.</p> <p>U PHP-u, JSON ekstenzija se koristi za predstavljanje podataka u JSON formatu. V <a href="https://bumotors.ru/bs/neskolko-versii-php-i-obnovlenie-php-v-isp-manager-kak-izmenit-ili-obnovit.html">PHP verzije</a> stariji od 5.2.0 JSON podrška je ugrađena u jezgro, u više <a href="https://bumotors.ru/bs/kak-ustanovit-na-aifon-rannyuyu-versiyu-kak-vernut-predydushchuyu-versiyu-ios.html">rane verzije</a> moraju biti povezani sa vašom skriptom <a href="https://bumotors.ru/bs/kak-pochistit-sistemu-kompyutera-kak-pochistit-kompyuter-ot.html">dodatni fajl</a> sa funkcijama.</p> <p>Dakle, u PHP-u su dvije funkcije odgovorne za rad s podacima u JSON formatu: json_encode () i json_decode ().</p> <h3>Pretvaranje podataka u JSON format</h3>$ json_data = niz ("id" => 1, "name" => "ivan", "country" => "Rusija", "office" => niz ("yandex", "management")); echo json_encode ($ json_data); <h3>Obrnuta konverzija podataka iz JSON formata</h3>$ json_string = "(" id ": 1," ime ":" ivan "," zemlja ":" Rusija "," kancelarija ": [" yandex "," upravljanje "])"; $ obj = json_decode ($ json_string); <p>Sada će $ obj sadržavati <a href="https://bumotors.ru/bs/sozdanie-i-razbor-dannyh-formata-json-v-php-vid-dannyh-v-formate-json.html">JSON podaci</a> prevedeno u PHP objekat, kojem možete pristupiti ovako:</p><p>Echo $ obj-> name; // Prikazaće ime ivan echo $ obj-> office; // Prikažite kompaniju yandex</p><p>Kao što vidite, $ obj-> office je niz.</p><p>Foreach ($ obj-> office kao $ val) echo $ val;</p><p>Rad sa JSON-om omogućava razmjenu podataka sa serverom <i>« <a href="https://bumotors.ru/bs/chto-takoe-blog-i-kak-ego-sozdat-plyusy-i-minusy-svoego-bloga.html">čista forma</a>» </i>... Potreba za slanjem glomaznih dijelova HTML koda je potpuno eliminirana.</p> ECMA-262 1999), format se smatra nezavisnim od jezika i može se koristiti sa gotovo bilo kojim programskim jezikom. Za mnoge jezike postoji gotov kod za kreiranje i manipulaciju JSON podacima. <h3>Upotreba</h3><p>Zbog svoje konciznosti u poređenju sa XML-om, JSON bi mogao biti prikladniji za serijalizaciju složenih struktura. Ako govorimo o web aplikacijama, u tom smislu je prikladna u zadacima razmjene podataka kako između pretraživača i servera (AJAX), tako i između samih servera (API).</p><p>Pošto je JSON format podskup sintakse <a href="https://bumotors.ru/bs/chto-takoe-yazyk-javascript-globalnye-i-lokalnye-peremennye-tipy.html">JavaScript jezik</a> tada se može brzo deserializirati pomoću ugrađene funkcije eval (). Osim toga, moguće je ubaciti potpuno funkcionalne JavaScript funkcije. V <a href="https://bumotors.ru/bs/operator-vybora-if-v-yazyke-c-osnovy-php-cikl-for-primery-ispolzovaniya-logicheskih-operatorov.html">PHP jezik</a> Od verzije 5.2.0, podrška za JSON je uključena u jezgro u obliku funkcija json_decode () i json_encode (), koje same konvertuju JSON tipove podataka u odgovarajuće PHP tipove i obrnuto.</p> <h3>Sintaksa</h3><p>JSON -tekst je (kodiran) jedna od dvije strukture:</p><ol><li>Set parova <i>ključ: vrijednost</i>... Na raznim jezicima, ovo je implementirano kao objekat, zapis, struktura, rečnik, hash tabela, lista sa ključevima ili asocijativni niz. Ključ može biti samo niz, vrijednost može biti bilo koji oblik.</li> <li>Uređeni skup vrijednosti. U mnogim jezicima ovo se implementira kao niz, vektor, lista ili sekvenca.</li> </ol><p>To su univerzalne strukture podataka: po pravilu, svaka moderna <span>programski jezik</span> podržava ih u ovom ili onom obliku. Ležali su unutra <a href="https://bumotors.ru/bs/format-json-primer-i-opisanie-osnovy-raboty-s-json.html">JSON okvir</a> budući da se koristi za razmjenu podataka između <a href="https://bumotors.ru/bs/kak-sdelat-drugoi-yazyk-na-klaviature-kak-pomenyat-yazyk-na.html">različitim jezicima</a> programiranje.</p><p>Strukture se koriste kao vrijednosti u JSON-u:</p><ol><li>Objekt je neuređen skup parova ključeva: vrijednosti zatvorenih u vitičaste zagrade "()". Ključ je opisan nizom, između njega i vrijednosti nalazi se simbol ":". Parovi ključ/vrijednost odvojeni su jedan od drugog zarezima.</li> <li>Niz (jednodimenzionalni) je uređeni skup vrijednosti. Niz je zatvoren u uglastim zagradama "". Vrijednosti su odvojene zarezima.</li> <li>Vrijednost može biti string sa dvostrukim navodnicima, broj, objekat, niz, jedan od literala: true, false ili null. To. strukture mogu biti ugniježđene jedna u drugu.</li> <li>Niz je uređeni skup od nula ili više unikod znakova, zatvorenih u <a href="https://bumotors.ru/bs/kak-izmenit-vid-kavychek-s-pryamyh-na-dvoinye-bazovoe-redaktirovanie.html">dvostruki navodnici</a>... Znakovi se mogu specificirati korištenjem izlaznih sekvenci koje počinju sa obrnutom kosom crtom "\". <p>String je vrlo sličan istoimenom tipu podataka u jezicima C i Java. Broj je također vrlo sličan C ili Java broju, osim što se koristi samo decimalni format. Razmaci se mogu umetnuti između bilo koja dva sintaktička elementa.</p> </li> </ol><p>Sljedeći primjer pokazuje JSON - reprezentaciju objekta koji opisuje osobu. Objekt sadrži niz polja imena i prezimena, objekt koji opisuje adresu i niz koji sadrži listu telefonskih brojeva.</p><p>Osnovne tehnike za rad sa JSON-om u JavaScript-u su:</p><ul><li>JSON.parse - Čita objekte iz stringa u JSON formatu.</li> <li>JSON.stringify - pretvara objekte u JSON string, koji se koristi kada trebate prenijeti podatke iz JavaScript-a preko mreže.</li> </ul><h3>1. Uvod u metodu JSON.parse</h3><p>Kreirajmo osnovnu Tizen web aplikaciju i damo joj ime <i>json1</i>.</p><p>Uvesti u fajl <i>index.html</i> sljedeći kod:</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="Tizen osnovni predložak generiran od strane Tizen Web IDE"/> <title>


Rice. 27.2.

Promenimo malo kod naše skripte:


Rice. 27.3.

Pogledajmo zanimljiviji slučaj:


Rice. 27.4.

2. Kreiranje objekta iz JSON stringa

Ovaj primjer je posuđen sa http://www.w3schools.com/js/js_validation.asp. Kreirajmo projekat json2... U fajlu index.tml unesimo sljedeći kod.

Kreirajte objekat iz JSON niza


Rice. 27.5.

3. Rad s metodom JSON.parse

Sljedeći primjer koristi JSON.parse za pretvaranje JSON niza u objekt (project json3).

Tizen Web IDE - Tizen - Tizen osnovna aplikacija


Rice. 27.6.

4. Rad sa reviver funkcijama

Funkcija oživljavanja se često koristi za pretvaranje JSON reprezentacije datumskih nizova Međunarodne organizacije za standardizaciju (ISO) u objekte datuma Koordinirano univerzalno vrijeme (UTC). Ovaj primjer koristi JSON.parse za deserijalizaciju ISO niza datuma. Funkcija dateReviver vraća objekte datuma za članove formatirane kao ISO nizovi datuma. Predlaže se malo izmijenjen primjer, preuzet sa stranice https://msdn.microsoft.com/ru-ru/library/cc836466%28v=VS.94%29.aspx?F = 255 & MSPPError = -2147217396. Kreirajmo projekat json4.

Tizen Web IDE - Tizen - Tizen osnovna aplikacija

Json(JavaScript Object Notation) je lagani format predstavljanja podataka zasnovan na podskupu JavaScript sintakse, tačnije na literali nizove i objekte. JSON je alternativa tradicionalnim formatima (obični tekst ili XML) koji se koriste prilikom razmjene podataka između servera i klijenta. Za razliku od jezika usklađenih s XML-om i XML-om, koji zahtijevaju raščlanjivanje, JSON definicije se jednostavno mogu uključiti u JavaScript. JSON format je predložio programer Douglas Crockford.

Možda ću doći iz daleka, ali da bismo zaista razumjeli JSON, hajde da prvo shvatimo (zapamtimo) sintaksu nizova i objekata u JavaScript literalnoj notaciji.

Nizovi kao literali
Niz u JavaScript-u se može definirati pomoću konstruktora niza, ovako:

Var aData = novi niz ("string", istina, 43, null);

U JavaScript-u, nizovi su netipizirani, tako da mogu pohraniti različite vrste podataka. U primjeru, niz sadrži string, logičku vrijednost, broj i null vrijednost.

Niz opisan kao literal može se definirati pomoću uglastih zagrada, unutar - vrijednosti elemenata niza, odvojene zarezima. Ovako bi izgledao isti niz, ali doslovno:

Var aData = ["string", istina, 43, null];

Pojedinačni elementi niza mogu se adresirati navođenjem imena niza i broja elementa:

Alert (aData); upozorenje (aData);

Objekti kao literali
Objekti u JavaScript-u se definiraju pomoću Object konstruktora, ovako:

Var oAuto = novi objekat (); oAuto.firm = "Audi"; oAuto.model = "A6"; oAuto.god = 2008; oAuto.cijena = 78000;

Isti kod, ali bukvalno će izgledati ovako:

Var oAuto = ("firma": "Audi", "model": "A6", "godina": 2008, "cijena": 78000);

Ovaj kod kreira objekt sa svojstvima firme, modela, godine i cijene i može mu se pristupiti na sljedeći način:

Upozorenje (oAuto.model); upozorenje (oAuto.godina);

ali možete koristiti i sintaksu nizova, pozivajući se na svojstva objekta na ovaj način:

Upozorenje (oAuto ["model"]); upozorenje (oAuto ["godina"]);

U doslovnom zapisu, opisi nizova i objekata mogu biti ugniježđeni jedan unutar drugog, stvarajući tako array object ili niz objekata... Provjerite ovaj kod:

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

Napravili smo niz aAuto koji sadrži tri objekta. Kombinujući sintaksu pristupa nizovima sa sintaksom pristupanja objektima, pokušajmo dobiti godinu proizvodnje drugog automobila:

Upozorenje (aAuto.godina); // dobiti 2008

Možete učiniti suprotno i opisati objekt nizova:

Var oAuto = ("firma": ["BMW", "Audi", "Volkswagen"], "model": ["X5", "A6", "Touareg 7L"], "godina" :, "cijena": );

u ovom slučaju, prvo upućujemo na objekt, a zatim na niz unutar njega:

Upozorenje (oAuto.godina); // dobiti 2008

Evo tako dugog predgovora, ali sada će biti mnogo jasnije šta ćemo s njim. Json

Json- kombinacija nizova i objekata i namijenjena je samo za pohranu podataka. shodno tome, Json ne može imati varijable i ne dozvoljava nikakve operacije na njima. Pokušajmo napisati prethodni primjer koristeći sintaksu Json:

("firma": ["BMW", "Audi", "Volkswagen"], "model": ["X5", "A6", "Touareg 7L"], "godina" :, "cijena" :)

Bilješka da nedostaje ime varijable i tačka-zarez. Prijenos takvog objekta pomoću HTTP protokola bit će vrlo brz, jer sadrži minimum znakova. Nakon što primimo takve podatke na strani klijenta i zapišemo ih u neku varijablu (na primjer sData), dobijamo niz informacija.
Bilješka: tačno niz, a ne objekat ili objekat sa ugniježđenim nizovima uopće. Pretvorite niz u objekt koristeći funkciju eval ().

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

Ovo će rezultirati objektom koji smo opisali upravo gore.

JSON preko XML-a
Dakle, koja je prednost JSON-a u odnosu na XML?

Ovdje govorimo isključivo o prednostima i nedostacima samo sa stanovišta organizacije razmjene podataka na webu.

Činjenica da se XML pokazuje kao suvišan u poređenju sa JSON-om. Pogledajmo ovo na jednostavnom primjeru. Iste podatke predstavljamo u XML formatu i u JSON formatu.

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

ovako to izgleda u XML formatu, a ispod - u JSON formatu:

("općenito": ("automobili": [("firma": "BMW", "model": "X5", "godina": 2007, "cijena": 99000), ("firma": "Audi", "model": "A6", "godina": 2008, "cijena": 78000), ("firma": "Volkswagen", "model": "Touareg 7L", "godina": 2006, "cijena": 45000 )]))

Koristeći JSON format dobitak će biti 42 bajta, a ne računajući razmake i čak 86 bajtova. A ako se također prisjetimo da podaci u JSON formatu ne zahtijevaju dodatnu analizu na strani klijenta, prednost JSON-a nad XML-om u smislu prijenosa podataka sa servera na klijenta postaje očigledna...

JSON (JavaScript Object Notation) je format za razmjenu podataka u tekstualnom obliku. Omogućava vam prijenos složenih struktura podataka u serijaliziranom obliku. Ovaj format prijenosa podataka postao je toliko popularan da su funkcije za obradu podataka u ovom formatu dodane u PHP jezgro od verzije 5.2.0. To znači da nema potrebe za povezivanjem dodatnih ekstenzija. JSON format podataka ljudi dobro razumiju. Osim toga, ova vrsta razmjene podataka se široko koristi između različitih API servisa. A uz ispravan razvoj algoritama za razmjenu informacija, možete dobiti vrlo veliku brzinu nego, na primjer, kada radite s podacima u XML formatu.

Slanje podataka

Možete slati podatke u JSON formatu na dva načina: formirati GET ili POST zahtjev sa kodiranim podacima koji se nalaze u GET ili POST varijabli ili staviti podatke u tijelo dokumenta. U praksi se obično koristi druga opcija.

Za slanje podataka potrebne su sljedeće funkcije:

  • string json_encode(mješovita vrijednost [, int opcije = 0])

    Parametar vrijednosti je podatak koji treba kodirati. Bilo koji tip je podržan osim tipa resurs... Parametar opcija sadrži bitmasku mogućih isporučenih vrijednosti (pogledajte tabelu za navedene JSON konstante).

  • resurs stream_context_create (])

    Ova funkcija je namijenjena kreiranju i vraćanju konteksta toka s opcijama navedenim u parametru opcija. Opcijski parametar opcija mora biti tipa asocijativnog niza. U početku je prazan. Drugi opcioni parametar parametara također mora biti asocijativni niz u formatu $ data [‘name’] = vrijednost.

  • string file_get_contents(string filename [, bool use_include_path [, kontekst resursa [, int offset [, int maxlen]]]])

    Korištenje ove funkcije vam omogućava da dobijete sadržaj datoteke kao string. Parametar filename je ime datoteke za čitanje. U parametru use_include_path od PHP 5, možete koristiti konstantu FILE_USE_INCLUDE_PATH da biste pronašli datoteku u uključenoj putanji. Parametar konteksta predstavlja resurs konteksta kreiran korištenjem stream_context_create (). U slučaju neuspjelog pokušaja otvaranja datoteke, vrijednost će biti vraćena false... Parametar offset sadrži pomak od kojeg se počinju čitati podaci. Parametar maxlen specificira veličinu primljenih podataka.

    Bilješka: Offset nije specificiran kada radite sa udaljenim tokovima.

Ispod je primjer slanja podataka u JSON formatu:

// Podaci za slanje $ request = array ("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => niz (1,2,3,4 , 5,6,7)); // Odredite opcije za kontekst toka $ options = array ("http" => array ("method" => "POST", "header" => "Content-Type: application / json; charset = utf-8 \ r \ n "," content "=> json_encode ($ zahtjev))); // Kreiraj kontekst toka $ context = stream_context_create ($ opcije); // Slanje podataka i primanje rezultata echo file_get_contents ("http://test.ru/json.php", 0, $ context);

Koristi improviziranu strukturu podataka koja se sastoji od datuma početka i završetka i niza brojeva za neke uslovne zapise. Imajte na umu da u zaglavlju zahtjeva Content-Type tip je “application / json”.

Preuzimanje podataka

Da bi se preneseni podaci primili na gore opisani način, potrebno je pročitati podatke iz ulaznog toka “ php: // ulaz”.

Funkcije koje se koriste za prihvatanje podataka:

  • mješovito json_decode(string json [, bool assoc = false [, int dubina = 512 [, int options = 0]]])

    Ova funkcija dekodira JSON string. Parametar json specificira string za dekodiranje. Parametar assoc kontrolira da li se vraćeni podaci pretvaraju u asocijativni niz. Ako postoji takva potreba, tada morate navesti kao vrijednost ovog parametra istinito... Parametar dubine označava dubinu rekurzije. I posljednji četvrti parametar, opcije, sadrži bitmasku opcija za dekodiranje. Trenutno samo podržano JSON_BIGINT_AS_STRING(veliki cijeli brojevi se prema zadanim postavkama pretvaraju u float)

  • resurs fopen(string filename, string mode [, bool use_include_path [, kontekst resursa]])

    Otvara datoteku i vraća deskriptor datoteke. Parametar filename je imenovani resurs koji ukazuje na datoteku. Parametar mode određuje tip pristupa datoteci (pogledajte tabelu sa listom mogućih načina za fopen ()). Zatim postoje dva izborni parametri to su: use_include_path i kontekst. Kada postavite parametar use_include_path na istinito ili 1 i pod uslovom da je dat imenovani resurs relativni put, datoteka koju treba otvoriti će se tražiti na listi direktorija koje koriste funkcije uključiti i zahtijevaju... U praksi se ovaj parametar praktički ne koristi. Parametar konteksta se koristi za specificiranje konteksta resursa.

  • string stream_get_contents(ručnik resursa [, int maxlen = -1 [, int offset = -1]])

    Ova funkcija vam omogućava da dobijete sadržaj toka kao string. Parametar ručke je resurs niti. Maxlen parametar sadrži maksimalni iznos bajt za čitanje. Podrazumevano je postavljeno na -1, što označava da su svi podaci primljeni. Parametar offset sadrži pomak od kojeg se počinju čitati podaci. Podrazumevano je također postavljeno na -1, što znači da će se očitavanje obaviti sa početne pozicije.

Ispod je primjer dobivanja podataka u JSON formatu na strani servera:

// Otvaranje ulaznog toka za čitanje $ f = fopen ("php: // input", "r"); // Dobivamo sadržaj toka $ data = stream_get_contents ($ f); if ($ data) (// kod za obradu print_r (json_decode ($ data));)

Rezultirajuća struktura podataka:

StdClass Object (=> 2013-10-10 => 2013-10-10 => Niz (=> 1 => 2 => 3 => 4 => 5 => 6 => 7))

Bilješka: potrebno je uzeti u obzir činjenicu da za rad sa JSON formatom podaci moraju biti u utf-8 kodiranju.

JSON je obezbijedio konstante za funkciju json_encode ().

JSON_HEX_TAG (cijeli broj) Svi su kodirani u \ u003C i \ u003E. Dostupno od PHP 5.3.0.
JSON_HEX_AMP (cijeli broj) Svi & su kodirani u \ u0026. Dostupno od PHP 5.3.0.
JSON_HEX_APOS (cijeli broj) Svi znakovi su kodirani u \ u0027. Dostupno od PHP 5.3.0.
JSON_HEX_QUOT (cijeli broj) Svi znakovi su "kodirani u \ u0022. Dostupno od PHP 5.3.0.
JSON_FORCE_OBJECT (cijeli broj) Emitirajte objekt umjesto niza kada koristite neasocijativni niz. Ovo je korisno kada program ili kod primatelj očekuje objekt ili je niz prazan. Dostupno od PHP 5.3.0.
JSON_NUMERIC_CHECK (cijeli broj) Kodirajte nizove koji sadrže brojeve kao brojeve. Dostupno od PHP 5.3.3.
JSON_BIGINT_AS_STRING (cijeli broj) Kodira velike cijele brojeve kao njihove ekvivalente stringova. Dostupno od PHP 5.4.0.
JSON_PRETTY_PRINT (cijeli broj) Koristi razmaka znakova u vraćenim podacima da ih formatirate. Dostupno od PHP 5.4.0.
JSON_UNESCAPED_SLASHES (cijeli broj) Nemojte pobjeći /. Dostupno od PHP 5.4.0.
JSON_UNESCAPED_UNICODE (cijeli broj) Nemojte kodirati višebajtne Unicode znakovi(podrazumevano su kodirani kao \ uXXXX). Dostupno od PHP 5.4.0.

Lista mogućih načina za fopen () koristeći način

'R' Otvara datoteku samo za čitanje; postavlja pokazivač na početak datoteke.
'R +' Otvara datoteku za čitanje i pisanje; postavlja pokazivač na početak datoteke.
'W' Otvara datoteku samo za pisanje; postavlja pokazivač na početak datoteke i skraćuje datoteku na nultu dužinu. Ako datoteka ne postoji, pokušava je kreirati.
'W +' Otvara datoteku za čitanje i pisanje; postavlja pokazivač na početak datoteke i skraćuje datoteku na nultu dužinu. Ako datoteka ne postoji, pokušava je kreirati.
'A' Otvara datoteku samo za pisanje; stavlja pokazivač na kraj datoteke. Ako datoteka ne postoji, pokušava je kreirati.
'A +' Otvara datoteku za čitanje i pisanje; stavlja pokazivač na kraj datoteke. Ako datoteka ne postoji, pokušava je kreirati.
'X' Kreira i otvara samo za pisanje; postavlja pokazivač na početak datoteke. Ako datoteka već postoji, fopen () neće uspjeti, vratiti FALSE i izbaciti grešku na nivou E_WARNING. Ako datoteka ne postoji, pokušat će je kreirati. Ovo je ekvivalentno specificiranju oznaka O_EXCL | O_CREAT za interni otvoreni (2) sistemski poziv.
'X +' Kreira i otvara za čitanje i pisanje; inače ima isto ponašanje kao 'x'.
'C' Otvara datoteku samo za pisanje. Ako datoteka ne postoji, onda je kreirana. Ako datoteka postoji, onda se ne skraćuje (za razliku od 'w'), a poziv ove funkcije ne uzrokuje grešku (kao što je slučaj sa 'x'). Pokazivač datoteke će biti postavljen na početak datoteke. Ovo može biti korisno ako želite da zaključate datoteku (pogledajte flock ()) prije promjene, jer korištenjem 'w' možete skratiti datoteku prije nego što se zaključa (ako želite skratiti datoteku, možete koristiti ftruncate () nakon zahtjev za zaključavanje).
'C +' Otvara datoteku za čitanje i pisanje; inače ima isto ponašanje kao 'c'.

Top srodni članci