S akými údajmi sa používa formát json. JavaScript - JSON a ako s ním pracovať

  • 18.05.2019

Ľudia, ktorí sú oboznámení s programovaním, okamžite rozpoznajú súbory s príponou JSON. Tento formát je skratkou JavaScript Object Notation a je v podstate textovou verziou výmeny údajov používanou v programovacom jazyku JavaScript. Preto buď špecializovaný softvér alebo textové editory pomôžu zvládnuť otváranie takýchto súborov.

Hlavnou črtou skriptov vo formáte JSON je ich zameniteľnosť s formátom XML. Oba typy sú textové dokumenty, ktoré je možné otvoriť pomocou textových procesorov. Začneme však špecializovaným softvérom.

Metóda 1: Altova XMLSpy

Pomerne známe vývojové prostredie, ktoré využívajú aj weboví programátori. Toto prostredie generuje aj súbory JSON, preto je schopné otvárať dokumenty tretích strán s týmto rozšírením.


Tento softvér má dve nevýhody. Prvým je základ platenej distribúcie. Skúšobná verzia je aktívna 30 dní, na jej získanie však musíte zadať meno a poštovú schránku. Druhým je všeobecná ťažkopádnosť: pre človeka, ktorý potrebuje len otvoriť súbor, sa to môže zdať príliš vymyslené.

Metóda 2: Poznámkový blok ++

Multifunkčný textový editor je prvý v zozname JSON skriptov vhodných na otvorenie.


Notepad ++ má veľa výhod - zobrazuje syntax mnohých programovacích jazykov a podporu pre pluginy a malú veľkosť ... Avšak kvôli niektorým zvláštnostiam program funguje pomaly, najmä ak otvoríte veľký dokument v to.

Metóda 3: AkelPad

Neuveriteľne jednoduchý a zároveň na funkcie bohatý textový editor od ruského vývojára. JSON je jedným z podporovaných formátov.


Rovnako ako Notepad ++, aj tento variant programu Poznámkový blok je bezplatný a podporuje doplnky. Funguje to rýchlejšie, ale veľké a zložité súbory sa nemusia otvoriť prvýkrát, takže na to pamätajte.

Metóda 4: Komodo Edit

Bezplatný softvér na písanie programovacieho kódu od spoločnosti Komodo. Vyznačuje sa moderným rozhraním a širokou podporou programátorských funkcií.


Bohužiaľ, v programe nie je žiadny ruský jazyk. Bežného používateľa však skôr odstraší nadbytočná funkcionalita a nezrozumiteľné prvky rozhrania – tento editor je predsa zameraný predovšetkým na programátorov.

Metóda 5: Vznešený text

Ďalší zástupca kódovo orientovaných textových editorov. Rozhranie je jednoduchšie ako u kolegov, ale možnosti sú rovnaké. K dispozícii je aj prenosná verzia aplikácie.


Ľutujeme, Sublime Text nie je k dispozícii v ruštine. Za nevýhodu možno nazvať aj sharewarový distribučný model: bezplatná verzia nie je ničím obmedzená, no z času na čas sa objaví pripomenutie kúpy licencie.

Metóda 6: NFOPad

Na prezeranie dokumentov s rozšírením JSON však postačí jednoduchý poznámkový blok.


NFOPad je vhodný na prezeranie dokumentov JSON, existuje však upozornenie - keď niektoré z nich otvoríte, program pevne visí. Aký je dôvod tejto funkcie, nie je známe, ale buďte opatrní.

Metóda 7: Poznámkový blok

Napokon, štandardný vstavaný textový procesor Windows je tiež schopný otvárať súbory JSON.


Na záver povedzme nasledovné: súbory s príponou JSON sú bežné textové dokumenty, ktoré dokážu spracovať nielen programy opísané v článku, ale aj množstvo ďalších, vrátane ich bezplatných náprotivkov a. Je vysoko pravdepodobné, že s takýmito súbormi môže pracovať a.

Premenné, polia a objekty sú známou a pohodlnou formou prezentácie údajov. Je zvykom popisovať údaje v jazyku prehliadača JavaScript, čo v serverovom jazyku PHP nie je potrebné. Formát JSON umožňuje zovšeobecniť ich do jedného celku a nesústreďovať sa na programovací jazyk. Tým sa údaje skonvertujú na páry: "meno = hodnota". Hodnota v každom z nich môže byť aj súborom takýchto párov.

Je akceptované spájať JSON so zloženými zátvorkami a to druhé je celkom opodstatnené, pretože formát JSON = Object Notation JavaScript. V posledných obzvlášť dynamických rokoch sa veľa zmenilo. To, čo bolo vytvorené pre konkrétny účel, často prinieslo nečakané výsledky alebo otvorilo nové obzory.

Výmena dát: prehliadač - server

Technológia AJAX sa stala tradičným, pravidelným obnovovaním stránky úplne prestal byť populárny. Návštevník, ktorý otvorí stránku, spustí sériu čiastočných výmen údajov, keď sa určité stránky zmenia iba na relevantnom mieste.

Verí sa, že vzhľad JSON je spojený s používaním AJAX, ale v skutočnosti asociatívna a jej objektová notácia (vlastnosti syntaxe na popis a používanie objektov) sú oveľa viac spojené s JSON ako výmena údajov medzi prehliadačom. a server.

Keďže obsah stránok moderných stránok sa skutočne stal „masívnym“ (objemným), účinnosť formátu na výmenu údajov nadobudla osobitný význam. To neznamená, že JSON sa stal novou reprezentáciou údajov, ale skutočnosť, že je už dlho súčasťou syntaxe JavaScriptu, je dôležitá.

Použitie azbuky v pomenovaní premenných je veľmi neočakávaný jav (nezmysel), no funguje v najnovších verziách prehliadačov Chrome, Firefox a dokonca aj Internet Explorer 11.

Cyrilika a JSON

Samozrejme, nemali by ste používať tento úplne neočakávaný jav, pamätajte si, ako ľahko sa hodnoty premenných napísaných ruskými písmenami menia na krakozyabry: čo môžem povedať o menách, najmä o vonkajších.

Je pochybné, že iniciatívu v cyrilických názvoch podporí aj externé prostredie prehliadača, s ktorým sa neustále musí potýkať. Táto skutočnosť si však zaslúži pozornosť z jednoduchého dôvodu, že formát JSON je schopnosť písať mená a hodnoty tak, ako to vývojár chce. Je to nevyhnutné, pretože v každej úlohe popis aplikačnej oblasti, ako si to vyžaduje, výrazne zjednodušuje ladenie a znižuje počet chýb.

Nezáleží na tom, na akom základe bola syntaktická inovácia založená - JSON, dôležité je, že poskytla zákonné právo a skutočnú príležitosť uviesť korešpondenciu: "akékoľvek meno = akákoľvek hodnota".

Musíme vzdať hold jazyku JavaScript: to, čo poskytuje syntax, vývojára nezaväzuje a nič mu neukladá. Vývojár voľne používa syntax jazyka na optimálne vytvorenie dátového modelu a algoritmus na ich použitie.

PHP a JSON

Akceptovaním údajov vo formáte JSON server (najmä prostredníctvom PHP) poskytuje možnosť spracovať ich tak, ako sú, a vrátiť výsledok späť do prehliadača v podobnom formáte. Pôvodné pole PHP:

  • $ cJSON = pole ("a" => "alfa", "b" => "beta", "g" => "gama").

Previesť do formátu JSON na prenos do prehliadača:

  • $ cJS = json_encode ($ cJSON).

výsledok:

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

Hniezdenie zobrazené na fotografii je povolené.

Tu bolo vygenerované pole pridané novým prvkom „v sebe“ s automatickým indexom „0“ a potom opäť so zadaným indexom „z“.

Json_decode () konvertuje reťazec JSON na pole PHP. Podobné výsledky možno dosiahnuť manipuláciou s funkciami a výbuchom (). V niektorých prípadoch je táto možnosť výhodnejšia.

Úroveň hniezdenia

Prvky môžu byť vnorené do seba na strane prehliadača aj na strane servera. V praxi formát JSON (ako je popísaný v štandarde RFC 4627) poskytuje výrazne viac ako 4 úrovne vnorenia, no táto funkcia by sa nemala zneužívať.

Najlepšie je nikdy neprekračovať rozumnú dostatočnosť, kód je vďaka tomu čitateľný, ostatným vývojárom uľahčuje ladenie a pochopenie.

Je zvykom odkazovať na JSON na dátové konštrukcie, ktoré sú jednoduchšie ako XML a sú zrozumiteľné pre ľudí aj počítače súčasne. To platí, keď je množstvo údajov malé a vývojár správne zvolil úroveň vnorenia. Vo všetkých ostatných prípadoch je ťažké spočítať počet zátvoriek a pochopiť ho na strane prehliadača aj na strane servera.

súbory JSON

JSON v praxi často nie je obmedzený na vnímateľný krátky reťazec. Akýkoľvek dátový konštrukt je vždy pragmatický. Zároveň je možné JSON efektívne využiť ako v reálnych dátach úlohy (podnikoví pracovníci), tak aj na implementáciu dočasných dát (objektová cache).

Podnikový personál a formát JSON: príklad

Zvyčajne je záznamom o jednej osobe priezvisko, meno, priezvisko, rok narodenia, špecializácia, vzdelanie, ... a niekoľko ďalších jednoduchých významov. Aj v obzvlášť náročných firmách rekord o jednom človeku nepresiahne tucet či dva obory. Je to vnímateľné a môže byť vložené do databázového reťazca.

Ak firma zamestnáva viacerých ľudí – to je jedna vec, ale ak desaťtisíce – je to úplne iné. Databázu môžete naďalej používať, ale jej uloženie ako súbor vyzerá praktickejšie a jednoduchšie na používanie.

JSON je obyčajný textový súbor. Prípad s personálnym stolom, kamkoľvek to šlo. Vždy si to môžete prečítať. Otvoriť a upraviť je tiež k dispozícii v akomkoľvek textovom editore, ktorý nezvykne pridávať informácie o svojej službe do obsahu súboru. Vo všeobecnosti je * .json čistý text vo vnútri prehliadača aj v súbore – reťazec.

Fotografia zobrazuje vyrovnávaciu pamäť objektu, ktorý tvorí obrázok, príklad.

Toto je príklad obsahu súboru vygenerovaného stránkou, ktorá poskytuje službu farebnej objemovej tlače pre hrnčeky a keramiku. Prirodzene, rozhodnúť sa, mať takýto formát JSON, ako ho otvoriť, je naozaj problematické. V tomto a podobných prípadoch však nie sú problémy s čítaním súboru: PHP súbor prečíta, analyzuje a prenesie do prehliadača. Údaje zmenené návštevníkom sa vrátia na server a zapíšu sa späť.

V tomto prípade použitia súbor funguje ako premenná, ktorá je uložená mimo kódu. Ak je to potrebné, premenná získa svoju hodnotu zo súboru a ak ju návštevník zmení v dialógovom okne poskytnutom webom, všetky zmeny sa zaznamenajú tak, ako sú. Nie je potrebné čítať a kontrolovať obsah súboru.

JSON sa často používa na ukladanie a používanie informácií o službách - nejde o tabuľku zamestnancov, nie je potrebné, aby ju videl vývojár ani návštevník stránky.

XML a JSON

„Všetko v správnom čase“ je klasický poznatok braný ako axióma ešte pred príchodom programovania. „Nič sa nezdá len tak“ – to bolo aj predtým, než človek napísal prvý zrozumiteľný program v umelom jazyku.

Dátové formáty vychádzajú z reálnej potreby a vychádzajú z dosiahnutých poznatkov. HTML má svoju vlastnú cestu, XML má svoju vlastnú cestu a JSON je objektová logika JavaScriptu rozšírená do iných jazykov. Porovnávanie jednej veci s druhou nie je najlepšie. Každému svoje.

XML si so svojimi úlohami poradí úžasne a očividne sa nezapíše do histórie. A JSON sa používal až do roku 2006, len nie každý vývojár považoval za svoju povinnosť deklarovať určité možnosti prezentácie svojich údajov.

V praxi sa vyskytli prípady, keď boli programy napísané v BASICu, ktoré nepoužívajú JSON ako taký, ale dokonale ukladajú páry názov = hodnota a sprístupňujú ich správnym algoritmom v správnom čase.

Špeciálne znaky ("", "~", "|", ...) a dátové formáty

Zvyk pracovať s asociatívnymi poľami a objektmi v JavaScripte robí používanie JSON prirodzeným a pohodlným. Je to naozaj skvelý formát, ale schopnosť rozdeliť a zreťaziť manipuláciou s reťazcami a poľami má oveľa hlbšie korene.

Funkcie join / split a PHP implode / explode umožňujú pohodlne a efektívne používať XML, JSON a vaše vlastné dátové formáty. Posledne menované je často optimálnejšie, zatiaľ čo prvé dva sú ideálne na všeobecné použitie. Ak sa informácie prenášajú na iného vývojára, server, súbor alebo databázu, je lepšie nehľadať XML a JSON. Každý s nimi pracuje, pretože prenos / príjem informácií nepotrebuje komentáre.

Používanie JSON v systéme Android

Čítanie a zápis údajov vo formáte JSON v systéme Android je nielen normou, ale aj mnohými objektmi zameranými na prácu práve s takýmto formátom údajov.

V tomto prípade sa používa formát JSON. Možno je to tak, ale otázka nie je o fenomenalite sociálnych sietí, ale o tom, že prezentácia informácií vo formáte „meno = hodnota“ je skutočne vhodná na programovanie aj používanie. Na rozdiel od prísneho a komplexného „XML“ ide o skutočne ľudsky priateľský formát.

Asociatívne polia

Stalo sa, že premenné mali byť popísané (JavaScript) alebo aspoň uviesť počiatočnú hodnotu (PHP). V oboch prípadoch môže premenná veľmi ľahko zmeniť svoj typ. Jazyk v prípade potreby vykoná túto konverziu automaticky.

Prečo by však premenná nemohla zmeniť aj svoj názov, objaviť sa počas vykonávania algoritmu a zmiznúť, keď už nie je potrebná? Asociatívne polia tento problém riešia, ale potom pri použití takýchto relatívne dynamických premenných bude v mieste ich aplikácie nasledovať názov poľa a zodpovedajúca syntax.

Táto okolnosť je obzvlášť výrazná v PHP, ale môžete sa s tým zmieriť, ako mimochodom so symbolom "$" v názve premennej a kombináciou "$ this->" vo vnútri objektu. Programovanie v JavaScripte a PHP súčasne, najprv sa naozaj divíte, ako je všetko odlišné, ale potom sa všetko stane tak známym a prirodzeným ...

Asociatívne pole -> JSON

V tomto príklade je dokument * .docx vytvorený pomocou knižnice PHPOffice / PHPWord a pole aProperties obsahuje vlastnosti tohto dokumentu (autor, spoločnosť, názov, kategória, dátum vytvorenia ...).

Druhé pole obsahuje údaje pre stránku:

  • orientácia (na šírku alebo normálne);
  • vertikálne a horizontálne rozmery;
  • zarážky (okraje vľavo, hore, dole, vpravo);
  • hlavičky a päty.

Vytvorenie dokumentu sa vykonáva na serveri, kde je nainštalovaná knižnica PHPOffice / PHPWord. Stránka poskytuje správu hodnôt týchto polí pomocou JavaScriptu. Výsledok vo formáte JSON sa vráti späť na server a použije sa v algoritmoch PHP v ich konštrukciách, to znamená v poliach.

Dynamické premenné

Formát JSON rieši problém dynamických premenných. Tu môžete vytvárať, upravovať a mazať premenné bez zbytočného syntaktického neporiadku. Vyzerá pekne a používa sa v JavaScripte.

V tomto príklade funkcia GetOjInfo () načíta názov hodnoty a hodnotu z objektu. Objekt reťazca JSON priradený k premennej ojInfo má spočiatku tri prvky: meno, vek a prácu. Premenná Status je pridaná o niečo neskôr.

Po prvom príkaze delete stratí reťazec ojInfo prvok age, po druhom odstránení prvok work. Ak predpokladáme, že tento reťazec je zbierkou premenných, ktoré majú určitý význam, potom pomocou JSON môžete skutočne vytvárať, meniť a mazať ľubovoľné ich množiny mimo operačného poľa (syntaxe) popisu a spracovania jazyka JavaScript. .

Formát JSON nebol navrhnutý pre túto možnosť, ale je to možné, praktické a pohodlné.

JavaScript nám umožňuje nielen pridať interaktivitu na webové stránky, ale umožňuje nám vykonávať úlohy, ktoré kedysi patrili serverom. JSON poskytuje jednoduchý spôsob vytvárania a ukladania štruktúrovaných údajov v JavaScripte. JSON je veľmi populárny a je skvelou alternatívou k XML. JSON (JavaScript Object Notation), ako už názov napovedá, je založený na vytváraní javascriptových objektov. Objekty JavaScriptu možno ľahko manipulovať, analyzovať pomocou rovnakého JavaScriptu.

Na rozdiel od XML sú vety JSON ľahko zostavené ľuďmi aj počítačmi. Dáta vo formáte JSON môžu byť napríklad priradené k premennej (takto vytvoríme objekt); potom je možné tieto údaje prečítať cez novovytvorený objekt.

Najprv vytvoríme premennú na uloženie našich údajov a potom použijeme JSON na definovanie objektu. Náš objekt je celkom jednoduchý: pole krstného mena a hodnota lúča. Reťazce JSON musia byť uzavreté v úvodzovkách. Ak používate čísla, úvodzovky sú voliteľné.

Tento príklad zobrazí hodnotu vlastnosti firstName v prehliadači.

Vytvorte zástupný objekt

Vytvorme realistickejší príklad: vložte naše údaje JSON do objektu DOM.

var data = ("firstName": "Ray"); document.getElementById ("zástupný symbol"). innerHTML = data.firstName;

Teraz namiesto zobrazenia upozornenia vkladáme údaje do prvku HTML. Údaje JSON môžu byť samozrejme oveľa zložitejšie. Skúsme pridať ďalšie polia.

data = ("firstName": "Ray", "lastName": "Villalobos", "joined": 2012); document.getElementById ("zástupný symbol"). innerHTML = data.firstName + "" + data.lastName + "" + data.joined;

Upozorňujeme, že údaje JSON sú pre lepšie pochopenie naformátované špecifickým spôsobom. Pole „spojené“ je 2012, ktoré nevyžaduje úvodzovky, pretože ide o číslo. Poďme sa pozrieť na niečo trochu zložitejšie.

Pridávanie polí

Čo ak chceme predstaviť skupinu ľudí ... potom musíme použiť polia. Polia JSON je možné vytvoriť pomocou hranatých zátvoriek. Pozrime sa, ako budú naše údaje vyzerať pre viacerých používateľov.

Var data = ("users": [("firstName": "Ray", "priezvisko": "Villalobos", "joined": 2012), ("firstName": "John", "priezvisko": "Jones", "joined": 2010)]) document.getElementById ("zástupný symbol"). innerHTML = data.users.firstName + "" + data.users.lastName + "" + data.users.joined;

Vyzerá to trochu zložitejšie, ale v skutočnosti to nie je ťažké pochopiť. Objekt JSON je vytvorený pomocou zložených zátvoriek; pole je vytvorené pomocou hranatých zátvoriek. Aby sme teda mohli organizovať naše dáta, vytvorili sme užívateľský objekt, do ktorého sme umiestnili pole. Pole obsahuje ďalšie objekty. Každý pár (názov / hodnota) je oddelený čiarkou.

Všimnite si, ako sa zmenil kód na vkladanie mena. Pripojili sme nový používateľský objekt a potom sme pomocou hranatých zátvoriek ukázali na prvý prvok v poli. Pridajme do našej dátovej štruktúry ešte jednu vrstvu.

Var data = ("users": [("firstName": "Ray", "priezvisko": "Villalobos", "joined": ("mesiac": "január", "deň": 12, "rok": 2012 )), ("meno": "John", "priezvisko": "Jones", "pripojený": ("mesiac": "apríl", "deň": 28, "rok": 2010))]). getElementById ("zástupný symbol"). innerHTML = data.users.firstName + "" + data.users.lastName + "-" + data.users.joined.month;

Spojená vlastnosť teraz obsahuje objekt s viacerými poľami; nie je potrebné použiť pole, preto používame zápis objektov. Teraz máme údaje pre niekoľkých používateľov, je čas prejsť každého používateľa a zobraziť ho v zozname.

Implementácia zoznamu používateľov (prechádzanie objektu JSON)

Použime teda javascript a vytvorte zoznam používateľov.

Var data = ("users": [("firstName": "Ray", "priezvisko": "Villalobos", "joined": ("mesiac": "január", "deň": 12, "rok": 2012 )), ("firstName": "John", "lastName": "Jones", "joined": ("mesiac": "apríl", "day": 28, "year": 2010))]) var output = "

    ";) výstup + ="
"; document.getElementById (" zástupný symbol "). innerHTML = výstup;

Na iteráciu všetkých vlastností objektu existuje konštrukcia pre..v:

For (kľúč var v objekte) (// kľúč - názov vlastnosti // objekt - hodnota vlastnosti ...)

Tu prejdeme všetky prvky poľa; údaje uložíme do výstupnej premennej a údaje vložíme do prvku s id rovným zástupnému symbolu. môžete povedať, že naše údaje sa budujú trochu pomaly.

Čítanie JSON z externého súboru

Bolo by pekné uložiť dáta do externého súboru a prečítať si ich podľa potreby. Budem používať knižnicu jQuery, a preto musíme najprv zahrnúť knižnicu jQuery; potom zavoláme funkciu getJSON. Takto vyzerá náš kód:

Ukážka JSON



Toto je v podstate rovnaký kód, ale údaje sa vydávajú vonku. Všetko len zabalíme do funkcie getJSON, ktorá robí všetku ťažkú ​​prácu pri čítaní súboru. Dátový súbor data.json je, povedzme, v rovnakom adresári a vyzerá takto:

("users": [("firstName": "Ray", "lastName": "Villalobos", "joined": ("mesiac": "január", "deň": 12, "rok": 2012)), ("firstName": "John", "lastName": "Jones", "joined": ("mesiac": "apríl", "deň": 28, "rok": 2010))])

Ako môžete vidieť, JSON je skutočne ľahko čitateľný a keď si zvyknete na zátvorky, bude ľahké ho kódovať.

JSON (JavaScript Object Notation) je formát na výmenu údajov v textovej forme. Umožňuje prenášať zložité dátové štruktúry v serializovanej forme. Tento formát prenosu údajov sa stal natoľko populárnym, že od verzie 5.2.0 boli do jadra PHP pridané funkcie na spracovanie údajov v tomto formáte. To znamená, že nie je potrebné pripájať ďalšie rozšírenia. Dátovému formátu JSON ľudia dobre rozumejú. Okrem toho je tento typ výmeny údajov široko používaný medzi rôznymi službami API. A so správnym vývojom algoritmov na výmenu informácií môžete získať veľmi vysokú rýchlosť, ako napríklad pri práci s údajmi vo formáte XML.

Odosielanie údajov

Údaje vo formáte JSON môžete odoslať dvoma spôsobmi: vytvorte požiadavku GET alebo POST so zakódovanými údajmi umiestnenými v premennej GET alebo POST alebo vložte údaje do tela dokumentu. V praxi sa zvyčajne používa druhá možnosť.

Na odosielanie údajov sú potrebné nasledujúce funkcie:

  • reťazec json_encode(zmiešaná hodnota [, možnosti int = 0])

    Parameter value sú dáta, ktoré je potrebné zakódovať. Podporovaný je akýkoľvek typ okrem typu zdroj... Parameter options obsahuje bitovú masku možných dodaných hodnôt (pozri tabuľku s poskytnutými konštantami JSON).

  • zdroj stream_context_create (])

    Táto funkcia je určená na vytvorenie a vrátenie kontextu prúdu s voľbami špecifikovanými v parametri options. Voliteľný parameter options musí byť typu asociatívneho poľa. Spočiatku je prázdny. Druhý voliteľný parameter params musí byť tiež asociatívne pole vo formáte $ data [‘name’] = value.

  • reťazec file_get_contents(reťazec názov_súboru [, bool use_include_path [, kontext zdroja [, int offset [, int maxlen]]]])

    Pomocou tejto funkcie môžete získať obsah súboru ako reťazec. Parameter súboru je názov súboru, ktorý sa má čítať. V parametri use_include_path od PHP 5 môžete použiť konštantu FILE_USE_INCLUDE_PATH aby ste našli súbor v zahrnutej ceste. Parameter kontextu predstavuje kontextový zdroj vytvorený pomocou stream_context_create (). V prípade neúspešného pokusu o otvorenie súboru sa hodnota vráti falošné... Parameter offset obsahuje offset, od ktorého sa má začať čítanie údajov. Parameter maxlen určuje veľkosť prijímaných údajov.

    Poznámka: Pri práci so vzdialenými prúdmi nie je zadaný posun.

Nižšie je uvedený príklad odosielania údajov vo formáte JSON:

// Údaje na odoslanie $ request = array ("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => array (1,2,3,4 , 5, 6, 7)); // Zadajte možnosti pre kontext streamu $ options = array ("http" => pole ("method" => "POST", "header" => "Content-Type: application / json; charset = utf-8 \ r \ n "," content "=> json_encode (požiadavka $))); // Vytvorenie kontextu streamu $ context = stream_context_create ($ options); // Odoslanie údajov a prijatie výsledku echo file_get_contents ("http://test.ru/json.php", 0, $ kontext);

Používa improvizovanú dátovú štruktúru pozostávajúcu z počiatočných a konečných dátumov a poľa čísel pre niektoré podmienené záznamy. Všimnite si, že v hlavičke požiadavky Druh obsahu typ je „application / json“.

Načítavanie údajov

Pre príjem prenášaných dát vyššie popísaným spôsobom je potrebné načítať dáta zo vstupného toku “ php: // vstup”.

Funkcie používané na prijímanie údajov:

  • zmiešané json_decode(reťazec json [, bool assoc = false [, hĺbka int = 512 [, možnosti int = 0]]])

    Táto funkcia dekóduje reťazec JSON. Parameter json určuje reťazec, ktorý sa má dekódovať. Parameter assoc riadi, či sa vrátené údaje skonvertujú na asociatívne pole. Ak existuje takáto potreba, musíte zadať hodnotu tohto parametra pravda... Parameter hĺbky udáva hĺbku rekurzie. A posledný štvrtý parameter, možnosti, obsahuje možnosti bitová maska ​​na dekódovanie. V súčasnosti iba podporované JSON_BIGINT_AS_STRING(veľké celé čísla sa predvolene skonvertujú na pohyblivé čísla)

  • zdroj fopen(reťazec názov súboru, režim reťazca [, bool use_include_path [, kontext zdroja]])

    Otvorí súbor a vráti deskriptor súboru. Parameter súboru je pomenovaný prostriedok, ktorý ukazuje na súbor. Parameter mode určuje typ prístupu k súboru (pozri tabuľku so zoznamom možných režimov pre fopen ()). Potom sú tu dva voliteľné parametre: use_include_path a context. Keď nastavíte parameter use_include_path na pravda alebo 1 a za predpokladu, že je ako pomenovaný zdroj zadaná relatívna cesta, súbor, ktorý sa má otvoriť, sa vyhľadá v zozname adresárov používaných funkciami zahŕňajú a vyžadovať... V praxi sa tento parameter prakticky nepoužíva. Parameter kontextu sa používa na určenie kontextu zdroja.

  • reťazec stream_get_contents(handle zdroja [, int maxlen = -1 [, int offset = -1]])

    Táto funkcia vám umožňuje získať obsah streamu ako reťazec. Parameter handle je zdroj vlákna. Parameter maxlen obsahuje maximálny počet bajtov na čítanie. Štandardne je nastavená na -1, čo znamená, že sú prijaté všetky dáta. Parameter offset obsahuje offset, od ktorého sa má začať čítanie údajov. V predvolenom nastavení je tiež nastavená na -1, čo znamená, že čítanie sa bude vykonávať zo začiatočnej pozície.

Nižšie je uvedený príklad získania údajov vo formáte JSON na strane servera:

// Otvorenie vstupného toku na čítanie $ f = fopen ("php: // input", "r"); // Získanie obsahu streamu $ data = stream_get_contents ($ f); if ($ údaje) (// Kód spracovania print_r (json_decode ($ údaje));)

Výsledná dátová štruktúra:

Objekt StdClass (=> 10. 10. 2013 => 10. 10. 2013 => Pole (=> 1 => 2 => 3 => 4 => 5 => 6 => 7))

Poznámka: je potrebné vziať do úvahy skutočnosť, že pre prácu s formátom JSON musia byť dáta v kódovaní utf-8.

JSON poskytol konštanty pre funkciu json_encode ().

JSON_HEX_TAG (celé číslo) Všetky sú zakódované v \ u003C a \ u003E. Dostupné od PHP 5.3.0.
JSON_HEX_AMP (celé číslo) Všetky & sú zakódované v \ u0026. Dostupné od PHP 5.3.0.
JSON_HEX_APOS (celé číslo) Všetky znaky sú zakódované v \ u0027. Dostupné od PHP 5.3.0.
JSON_HEX_QUOT (celé číslo) Všetky znaky sú zakódované v \ u0022. Dostupné od PHP 5.3.0.
JSON_FORCE_OBJECT (celé číslo) Pri použití neasociatívneho poľa vyšle objekt namiesto poľa. To je užitočné, keď prijímajúci program alebo kód očakáva objekt alebo je pole prázdne. Dostupné od PHP 5.3.0.
JSON_NUMERIC_CHECK (celé číslo) Reťazce obsahujúce čísla zakódujte ako čísla. Dostupné od PHP 5.3.3.
JSON_BIGINT_AS_STRING (celé číslo) Kóduje veľké celé čísla ako ich reťazcové ekvivalenty. Dostupné od PHP 5.4.0.
JSON_PRETTY_PRINT (celé číslo) Na formátovanie použite vo vrátených údajoch znaky medzier. Dostupné od PHP 5.4.0.
JSON_UNESCAPED_SLASHES (celé číslo) Neutekaj /. Dostupné od PHP 5.4.0.
JSON_UNESCAPED_UNICODE (celé číslo) Nekódujte viacbajtové znaky Unicode (predvolene sú kódované ako \ uXXXX). Dostupné od PHP 5.4.0.

Zoznam možných režimov pre fopen () pomocou režimu

'R' Otvorí súbor len na čítanie; umiestni ukazovateľ na začiatok súboru.
'R +' Otvorí súbor na čítanie a zápis; umiestni ukazovateľ na začiatok súboru.
'W' Otvorí súbor iba na zápis; umiestni ukazovateľ na začiatok súboru a skráti súbor na nulovú dĺžku. Ak súbor neexistuje, pokúsi sa ho vytvoriť.
„W +“ Otvorí súbor na čítanie a zápis; umiestni ukazovateľ na začiatok súboru a skráti súbor na nulovú dĺžku. Ak súbor neexistuje, pokúsi sa ho vytvoriť.
„A“ Otvorí súbor iba na zápis; umiestni ukazovateľ na koniec súboru. Ak súbor neexistuje, pokúsi sa ho vytvoriť.
„A +“ Otvorí súbor na čítanie a zápis; umiestni ukazovateľ na koniec súboru. Ak súbor neexistuje, pokúsi sa ho vytvoriť.
'X' Vytvára a otvára iba na písanie; umiestni ukazovateľ na začiatok súboru. Ak súbor už existuje, fopen () zlyhá, vráti FALSE a vyvolá chybu úrovne E_WARNING. Ak súbor neexistuje, pokúsi sa ho vytvoriť. Je to ekvivalentné špecifikovaniu príznakov O_EXCL | O_CREAT pre vnútorné otvorené (2) systémové volanie.
„X +“ Vytvára a otvára na čítanie a písanie; inak má rovnaké správanie ako 'x'.
'C' Otvorí súbor iba na zápis. Ak súbor neexistuje, vytvorí sa. Ak súbor existuje, nie je skrátený (na rozdiel od „w“) a volanie tejto funkcie nespôsobí chybu (ako je to v prípade „x“). Ukazovateľ súboru sa nastaví na začiatok súboru. To môže byť užitočné, ak chcete zamknúť súbor (pozri flock ()) pred zmenou, pretože použitie 'w' môže skrátiť súbor pred získaním zámku (ak chcete skrátiť súbor, môžete použiť ftruncate () po žiadosť o uzamknutie).
"C +" Otvorí súbor na čítanie a zápis; inak má rovnaké správanie ako „c“.
ECMA-262 1999), formát sa považuje za nezávislý na jazyku a možno ho použiť s takmer akýmkoľvek programovacím jazykom. Pre mnoho jazykov existuje pripravený kód na vytváranie a manipuláciu s údajmi JSON.

Použitie

Vďaka svojej stručnosti v porovnaní s XML môže byť JSON vhodnejší na serializáciu zložitých štruktúr. Ak hovoríme o webových aplikáciách, v tomto duchu je to vhodné pri úlohách výmeny údajov medzi prehliadačom a serverom (AJAX) a medzi samotnými servermi (API).

Keďže JSON je podmnožinou syntaxe JavaScriptu, dá sa rýchlo deserializovať pomocou vstavanej funkcie eval (). Okrem toho je možné vkladať plne funkčné JavaScript funkcie. V PHP 5.2.0 a novších je podpora JSON zahrnutá v jadre vo forme funkcií json_decode () a json_encode (), ktoré samotné konvertujú dátové typy JSON na zodpovedajúce typy PHP a naopak.

Syntax

JSON -text je (zakódovaný) jednou z dvoch štruktúr:

  1. Sada párov kľúč: hodnota... V rôznych jazykoch je to implementované ako objekt, záznam, štruktúra, slovník, hašovacia tabuľka, kľúčovaný zoznam alebo asociatívne pole. Kľúčom môže byť iba reťazec, hodnota môže mať ľubovoľný tvar.
  2. Usporiadaný súbor hodnôt. V mnohých jazykoch je to implementované ako pole, vektor, zoznam alebo sekvencia.

Ide o univerzálne dátové štruktúry: spravidla akékoľvek moderné programovací jazyk podporuje ich v tej či onej forme. Tvorili základ pre JSON, pretože sa používa na výmenu údajov medzi rôznymi programovacími jazykmi.

Štruktúry sa používajú ako hodnoty v JSON:

  1. Objekt je neusporiadaná množina párov kľúč: hodnota uzavretá v zložených zátvorkách "()". Kľúč je opísaný reťazcom, medzi ním a hodnotou je symbol „:“. Páry kľúč – hodnota sú navzájom oddelené čiarkami.
  2. Pole (jednorozmerné) je usporiadaná množina hodnôt. Pole je uzavreté v hranatých zátvorkách "". Hodnoty sú oddelené čiarkami.
  3. Hodnota môže byť reťazec v úvodzovkách, číslo, objekt, pole, jeden z literálov: true, false alebo null. To. štruktúry môžu byť vnorené do seba.
  4. Reťazec je usporiadaná množina nula alebo viacerých znakov unicode, uzavretých v úvodzovkách. Znaky je možné zadať pomocou sekvencií escape začínajúcich spätnou lomkou "\".

    Reťazec je veľmi podobný dátovému typu s rovnakým názvom v jazykoch C a Java. Číslo je tiež veľmi podobné číslu C alebo Java, až na to, že sa používa iba desiatkový formát. Medzi ľubovoľné dva syntaktické prvky možno vložiť medzery.

Nasledujúci príklad ukazuje JSON - reprezentáciu objektu popisujúceho osobu. Objekt obsahuje reťazcové polia mena a priezviska, objekt popisujúci adresu a pole obsahujúce zoznam telefónnych čísel.

Základné techniky pre prácu s JSON v JavaScripte sú:

  • JSON.parse – Číta objekty z reťazca vo formáte JSON.
  • JSON.stringify – konvertuje objekty na reťazec JSON, ktorý sa používa, keď potrebujete preniesť dáta z JavaScriptu cez sieť.

1. Úvod do metódy JSON.parse

Vytvorme si základnú webovú aplikáciu Tizen a pomenujeme ju json1.

Uveďte do súboru index.html nasledujúci kód:




Ryža. 27.2.

Poďme trochu zmeniť kód nášho skriptu:


Ryža. 27.3.

Pozrime sa na zaujímavejší prípad:


Ryža. 27.4.

2. Vytvorenie objektu z reťazca JSON

Tento príklad bol vypožičaný z http://www.w3schools.com/js/js_validation.asp. Poďme vytvoriť projekt json2... V súbore index.tml zadáme nasledujúci kód.

Vytvorte objekt z reťazca JSON


Ryža. 27.5.

3. Práca s metódou JSON.parse

Nasledujúci príklad používa JSON.parse na konverziu reťazca JSON na objekt (projekt json3).

Tizen Web IDE - Tizen - základná aplikácia Tizen


Ryža. 27.6.

4. Práca s funkciami oživenia

Funkcia oživenia sa často používa na konverziu JSON reprezentácie reťazcov dátumu Medzinárodnej organizácie pre štandardizáciu (ISO) na objekty dátumu koordinovaného svetového času (UTC). Tento príklad používa JSON.parse na deserializáciu reťazca dátumu ISO. Funkcia dateReviver vracia objekty Date pre členov naformátovaných ako reťazce dátumu ISO. Navrhuje sa mierne upravený príklad, prevzatý zo stránky https://msdn.microsoft.com/ru-ru/library/cc836466%28v=VS.94%29.aspx? F = 255 & MSPPError = -2147217396. Poďme vytvoriť projekt json4.

Tizen Web IDE - Tizen - základná aplikácia Tizen