jazyk json. JSON: Základy
Určite ste už niekedy počuli o JSON. Čo je to? Čo dokáže a ako ho používať?
V tomto návode preberieme základy JSON a pokryjeme nasledujúce body:
- Čo je JSON?
- Na čo sa používa JSON?
- Ako vytvoriť reťazec JSON?
- Jednoduchý príklad reťazca JSON.
- Porovnajme JSON a XML.
- Ako pracovať s JSON v JavaScripte a PHP?
JSON je jednoduchý textový spôsob ukladania a prenosu štruktúrovaných údajov. Pomocou jednoduchej syntaxe môžete jednoducho uložiť čokoľvek od jedného čísla po reťazce, polia a objekty v obyčajnom texte. Môžete tiež prepojiť polia a objekty a vytvoriť tak zložité dátové štruktúry.
Po vytvorení reťazca JSON je ľahké ho odoslať do inej aplikácie alebo na iné miesto v sieti, pretože ide o obyčajný text.
JSON má nasledujúce výhody:
- Je kompaktný.
- Jeho vety sú ľahko čitateľné a skladajú ich ľudia aj počítače.
- Dá sa ľahko previesť na dátovú štruktúru pre väčšinu programovacích jazykov (čísla, reťazce, booleany, polia atď.)
- Mnoho programovacích jazykov má funkcie a knižnice na čítanie a vytváranie štruktúr JSON.
Názov JSON je skratka pre JavaScript Object Notation. Ako už názov napovedá, je založený na spôsobe definovania objektov (podobne ako vytváranie asociatívnych polí v iných jazykoch) a polí.
Na čo sa používa JSON?Najbežnejším použitím JSON je odosielanie údajov zo servera do prehliadača. Údaje JSON sa zvyčajne doručujú pomocou technológie AJAX, ktorá umožňuje prehliadaču a serveru komunikovať bez nutnosti opätovného načítania stránky.
JSON môžete použiť aj na odosielanie údajov z prehliadača na server odoslaním reťazca JSON ako parametra do požiadaviek GET alebo POST. Táto metóda je však menej bežná, pretože prenos údajov prostredníctvom požiadaviek AJAX možno zjednodušiť. Napríklad ID produktu môže byť zahrnuté do adresy URL ako súčasť požiadavky GET.
Knižnica jQuery má niekoľko metód, ako napríklad getJSON() a parseJSON(), ktoré uľahčujú získavanie údajov pomocou JSON prostredníctvom požiadaviek AJAX.
Ako vytvoriť reťazec JSON?Existuje niekoľko základných pravidiel na vytvorenie reťazca JSON:
- Reťazec JSON obsahuje buď pole hodnôt, alebo objekt (asociatívne pole párov názov/hodnota).
- Pole je uzavretý v hranatých zátvorkách ([ a ]) a obsahuje zoznam hodnôt oddelených čiarkami.
- Objekt je uzavretý v zložených zátvorkách (( a )) a obsahuje čiarkami oddelený zoznam párov názov/hodnota.
- pár meno/hodnota pozostáva z názvu poľa v dvojitých úvodzovkách, za ktorým nasleduje dvojbodka (:) a hodnota poľa.
- Význam v poli alebo objekte môže byť:
- Číslo (celé číslo alebo s pohyblivou rádovou čiarkou)
- Reťazec (v úvodzovkách)
- Boolovská hodnota (pravda alebo nepravda)
- Ďalšie pole (uzavreté v hranatých zátvorkách)
- Ďalší objekt (uzavretý v zložených zátvorkách)
- nulovú hodnotu
Ak chcete do reťazca vložiť dvojité úvodzovky, musíte použiť spätnú lomku: \" . Rovnako ako v mnohých programovacích jazykoch môžete do reťazca vložiť riadiace znaky a hexadecimálne kódy tak, že pred nimi dáte opačnú lomku. Podrobnosti nájdete na webovej lokalite JSON.
Jednoduchý príklad reťazca JSONNižšie je uvedený príklad objednávania vo formáte JSON:
( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chránený]", "contents": [ ( "productID": 34, "productName": "super produkt", "množstvo": 1 ), ( "productID": 56, "productName": "zázračný produkt", "množstvo": 3) ], "orderCompleted": true )
Pozrime sa na riadok podrobne:
- Objekt vytvoríme pomocou zložených zátvoriek (( a )).
- Objekt má niekoľko párov názov/hodnota: "orderID": 12345 vlastnosť s názvom "orderId" a celočíselnou hodnotou 12345 "shopperName": "Vanya Ivanov" vlastnosť s názvom "shopperName" a hodnotou reťazca "Vanya Ivanov" " "shopperEmail": " [e-mail chránený]" Vlastnosť s názvom "shopperEmail" s hodnotou reťazca " [e-mail chránený]" "contents": [ ... ] Vlastnosť s názvom "contents", ktorej hodnota je pole "orderCompleted": true Vlastnosť s názvom "orderCompleted" a boolovská hodnota true
- V poli "contents" sú 2 objekty reprezentujúce jednotlivé položky v objednávke. Každý objekt obsahuje 3 vlastnosti: productID , productName a množstvo .
Mimochodom, keďže JSON je založený na deklarovaní objektov JavaScriptu, môžete z vyššie uvedeného reťazca JSON rýchlo a jednoducho urobiť objekt JavaScriptu:
var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chránený]", "contents": [ ( "productID": 34, "productName": "super produkt", "množstvo": 1 ), ( "productID": 56, "productName": "zázračný produkt", "množstvo": 3 ) ], "objednávka dokončená": true);
Porovnanie JSON a XMLV mnohých ohľadoch si môžete predstaviť JSON ako alternatívu k XML, aspoň v priestore webových aplikácií. Koncept AJAX bol pôvodne založený na použití XML na prenos údajov medzi serverom a prehliadačom. V posledných rokoch sa však JSON stáva čoraz populárnejším na prenos údajov AJAX.
Zatiaľ čo XML je osvedčená technológia, ktorá sa používa vo veľkom množstve aplikácií, JSON má výhodu kompaktnejšieho a ľahšie rozpoznateľného dátového formátu.
Takto by vyzeral vyššie uvedený príklad objektu v XML:
orderID 12345 shopperMeno Vanya Ivanov shopperEmail [e-mail chránený] obsah produktID 34 produktNazov Super množstvo produktu 1 produktID 56 produktNazov Miracle množstvo produktu 3 objednávkaSplnená pravda
Verzia XML je podstatne väčšia. V skutočnosti má 1128 znakov, zatiaľ čo verzia JSON má len 323 znakov. Verzia XML je tiež dosť náročná na pochopenie.
Samozrejme, toto je radikálny príklad. A je možné vytvoriť kompaktnejší XML záznam. Ale aj to bude výrazne dlhšie ako ekvivalent JSON.
Práca s reťazcom JSON v JavaScripteJSON má jednoduchý formát, ale manuálne vytváranie reťazca JSON je dosť únavné. Okrem toho často potrebujete vziať reťazec JSON, previesť jeho obsah na premennú, ktorú možno použiť v kóde.
Väčšina programovacích jazykov má nástroje na jednoduchú konverziu premenných na reťazce JSON a naopak.
Vytvorenie reťazca JSON z premennejJavaScript má vstavanú metódu JSON.stringify(), ktorá berie premennú a vracia reťazec JSON predstavujúci jej obsah. Napríklad vytvorte objekt JavaScript, ktorý obsahuje informácie o objednávke z nášho príkladu, a potom z neho vytvorte reťazec JSON:
var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-mail chránený]", "contents": [ ( "productID": 34, "productName": "super produkt", "množstvo": 1 ), ( "productID": 56, "productName": "zázračný produkt", "množstvo": 3 ) ], "orderCompleted": true );
Tento kód vytvorí:
Všimnite si, že metóda JSON.stringify() vracia reťazec JSON bez medzier. Je ťažšie čitateľný, ale na prenos po sieti je kompaktnejší.
Existuje niekoľko spôsobov, ako analyzovať reťazec JSON v jazyku JavaScript, ale najbezpečnejšie a najspoľahlivejšie je použiť vstavanú metódu JSON.parse(). Prijme reťazec JSON a vráti objekt alebo pole JavaScriptu, ktoré obsahuje údaje. Napríklad:
var jsonString = " \ ( \ "ID objednávky": 12345, \ "názov nakupujúceho": "Vanya Ivanov", \ "e-mail nakupujúceho": " [e-mail chránený]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Super produkt", \ "množstvo": 1 \), \ ( \ "productID": 56, \ "productName": "Zázračný tovar", \"množstvo": 3\ ) \ ], \"objednávka dokončená": pravda \ ) \"; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);
Vytvorili sme premennú jsonString, ktorá obsahuje reťazec JSON našej vzorovej objednávky. Tento reťazec potom odovzdáme metóde JSON.parse(), ktorá vytvorí objekt obsahujúci údaje JSON a uloží ich do premennej košíka. Zostáva len skontrolovať zobrazením vlastností objektu shopperEmail a productName poľa obsahu.
V dôsledku toho dostaneme nasledujúci výstup:
V skutočnej aplikácii by váš kód JavaScript prijal objednávku ako reťazec JSON v odpovedi AJAX zo serverového skriptu, odovzdal reťazec metóde JSON.parse() a potom by údaje použil na zobrazenie na stránke používateľa.
JSON.stringify() a JSON.parse() majú ďalšie možnosti, ako napríklad použitie funkcií spätného volania na vlastnú konverziu určitých údajov. Takéto možnosti sú veľmi užitočné pri konverzii rôznych údajov na správne objekty JavaScript.
Práca s reťazcom JSON v PHPPHP, podobne ako JavaScript, má vstavané funkcie na prácu s reťazcami JSON.
Vytvorenie reťazca JSON z premennej PHPFunkcia json_encode() berie premennú PHP a vracia reťazec JSON predstavujúci obsah premennej. Tu je náš príklad objednávky napísaný v PHP:
Tento kód vracia presne rovnaký reťazec JSON ako v príklade JavaScriptu:
("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [e-mail chránený]","contents":[("productID":34,"productName":"Super produkt","quantity":1),("productID":56,"productName":"Zázračný produkt","množstvo": 3)],"orderCompleted":true)
V skutočnej aplikácii váš PHP skript odošle tento reťazec JSON ako súčasť odpovede AJAX do prehliadača, kde ho kód JavaScript pomocou metódy JSON.parse() analyzuje späť do premennej, ktorá sa zobrazí na stránke používateľa. .
Funkcii json_encode() môžete ako druhý argument odovzdať rôzne príznaky. S ich pomocou môžete zmeniť princípy kódovania obsahu premenných do reťazca JSON.
Vytvorte premennú z reťazca JSONAk chcete konvertovať reťazec JSON na premennú PHP, použite metódu json_decode(). Nahraďte náš príklad pre JavaScript metódou JSON.parse() kódom PHP:
Rovnako ako v prípade JavaScriptu tento kód vytvorí:
[e-mail chránený] Zázračný produkt
Funkcia json_decode() štandardne vracia objekty JSON ako objekty PHP. Existujú všeobecné objekty PHP triedy stdClass. Preto používame -> na prístup k vlastnostiam objektu v príklade vyššie.
Ak potrebujete objekt JSON ako pridružené pole PHP, musíte funkcii json_decode() odovzdať hodnotu true ako druhý argument. Napríklad:
$cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
Tento kód vytvorí rovnaký výstup:
[e-mail chránený] Zázračný produkt
Funkcii json_decode() môžete tiež odovzdať ďalšie argumenty na určenie hĺbky rekurzie a spôsobu spracovania veľkých celých čísel.
ZáverAj keď je JSON ľahko pochopiteľný a použiteľný, je to veľmi užitočný a flexibilný nástroj na prenos dát medzi aplikáciami a počítačmi, najmä pri použití AJAX. Ak plánujete vyvinúť aplikáciu AJAX, potom niet pochýb o tom, že JSON sa stane nevyhnutným nástrojom vo vašej dielni.
Čo je JSON a čo dokáže? V tomto článku sa dozviete, ako používať JSON na jednoduchú prácu s údajmi. Pozrieme sa aj na to, ako pracovať s JSON pomocou PHP a JavaScriptu.
Ak ste vyvíjali webové stránky alebo webové aplikácie vo všeobecnosti, je pravdepodobné, že ste o JSON aspoň zbežne počuli. Ale čo presne znamená JSON? Čo dokáže tento dátový formát a ako ho možno použiť?
V tomto článku sa naučíme základy práce s formátom json. Budeme sledovať nasledujúce témy:
- Čo je formát JSON?
- Ako vytvoriť reťazce JSON?
- Jednoduchý príklad údajov JSON
- Porovnanie JSON s XML
Začnime!
Čo je formát JSON?JSON je jednoduchý textový spôsob ukladania a prenosu štruktúrovaných údajov. Pomocou jednoduchej syntaxe môžete jednoducho ukladať jednoduché čísla a reťazce, ako aj polia a objekty, pričom nepoužívate nič viac ako text. Môžete tiež prepojiť objekty a polia, čo vám umožní vytvárať zložité dátové štruktúry.
Po vytvorení reťazca JSON ho možno jednoducho odoslať do ľubovoľnej aplikácie alebo počítača, pretože ide len o text.
JSON má mnoho výhod:
- Je kompaktný
- Je čitateľný pre ľudí a ľahko čitateľný počítačmi
- Dá sa ľahko previesť do softvérových formátov: číselné hodnoty, reťazce, booleovský formát, nulová hodnota, polia a asociatívne polia.
- Takmer všetky programovacie jazyky majú funkcie, ktoré vám umožňujú čítať a vytvárať formát údajov json.
Doslova skratka JSON znamená JavaScript Object Notation. Ako už bolo popísané vyššie, tento formát je založený na vytváraní objektov, niečo podobné ako asociatívne polia v iných programovacích jazykoch.
Na aké účely sa používa JSON?Json sa používa predovšetkým na výmenu údajov medzi javascriptom a serverom (php). Inými slovami, pre technológiu ajax. To je veľmi výhodné, keď odovzdávate viacero premenných alebo celé dátové polia.
V príklade to vyzerá takto:
Takto sa obrázok zväčší bez opätovného načítania stránky v prehliadači. To je veľmi výhodné, keď potrebujeme prijať čiastočné dáta alebo preniesť malé množstvo informácií na server.
Obľúbený jQuery všetkých má funkcie getJSON() a parseJSON(), ktoré vám pomôžu pracovať s formátom prostredníctvom ajaxových požiadaviek.
Ako vytvoriť reťazce JSON?Nižšie sú uvedené základné pravidlá vytvárania reťazcov JSON:
- Reťazec JSON obsahuje pole hodnôt aj objekt (asociatívne pole s pármi názov/hodnota).
- Pole musí byť zabalené v hranatých zátvorkách [ a ] a môže obsahovať zoznam hodnôt, ktoré sú oddelené čiarkou.
- Objekty sú zabalené pomocou zložených ramien ( a ) a tiež obsahujú páry názov/hodnota oddelené čiarkou.
- Páry názov/hodnota pozostávajú z názvu poľa (v úvodzovkách), za ktorým nasleduje dvojbodka (:), za ktorou nasleduje hodnota poľa.
- Hodnoty v poli alebo objekte môžu byť:
- Číselné (celé číslo alebo bodkovaný zlomok)
- Reťazce (zabalené v úvodzovkách)
- Boolean (pravda alebo nepravda)
- Iné polia (zabalené v hranatých zátvorkách [ a ])
- Iné predmety (zabalené do kučeravých ramien ( a ))
- Nulová hodnota
Dôležité!
Ak v hodnotách používate dvojité úvodzovky, zadajte ich opačnou lomkou: \“. Môžete použiť aj hexadecimálne kódované znaky, rovnako ako v iných programovacích jazykoch.Jednoduchý príklad údajov JSON
Nasledujúci príklad ukazuje, ako môžete uložiť údaje do „košíka“ internetového obchodu pomocou formátu JSON: [e-mail chránený]("orderID": 12345, "shopperName": "John Smith", "shopperEmail": "
", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true )
Vo vnútri poľa content máme dva objekty, ktoré zobrazujú obsah košíka. Každý objekt produktu má tri vlastnosti: productID, productName, množstvo.
Nakoniec, keďže JSON je identický s objektmi v JavaScripte, môžete si jednoducho vziať tento príklad a vytvoriť z neho objekt JavaScript: [e-mail chránený] var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": "
", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true );Porovnanie JSON s XML
Hoci je XML osvedčenou technológiou, ktorú používa mnoho aplikácií, výhody formátu JSON spočívajú v tom, že je kompaktnejší a ľahšie sa píše a číta.
Tu je vyššie uvedený príklad JSON, prepísaný iba vo formáte XML:
orderID 12345 shopperName John Smith shopperEmail [e-mail chránený] obsah productID 34 productName SuperWidget množstvo 1 productID 56 productName WonderWidget množstvo 3 orderCompleted true
Ako vidíte, je niekoľkonásobne dlhší ako JSON. V skutočnosti má tento príklad 1128 znakov, zatiaľ čo verzia JSON má iba 323 znakov. Verzia XML je tiež náročnejšia na čítanie.
Prirodzene, nemožno súdiť len podľa jedného príkladu, ale aj malé množstvo informácií zaberá menej miesta vo formáte JSON ako v XML.
Ako pracovať s JSON cez PHP a JS?Teraz sa dostávame k najzaujímavejšej časti – praktickej stránke formátu JSON. Najprv vzdajme hold JavaScriptu a potom uvidíme, ako môžete manipulovať s JSON prostredníctvom PHP.
Vytváranie a čítanie formátu JSON pomocou JavaScriptuAj keď je formát JSON jednoduchý, pri vývoji webových aplikácií je ťažké písať ručne. Navyše často musíte konvertovať reťazce JSON na premenné a potom ich použiť vo svojom kóde.
Našťastie veľa programovacích jazykov poskytuje nástroje na prácu s reťazcami JSON. Hlavnou myšlienkou je:
Ak chcete vytvoriť reťazce JSON, začnete s premennými obsahujúcimi nejaké hodnoty a potom ich prenesiete cez funkciu, ktorá zmení údaje na reťazec JSON.
Pri čítaní reťazcov JSON začínate reťazcom JSON obsahujúcim určité údaje, prechádzate reťazcom cez funkciu, ktorá vytvára premenné obsahujúce údaje.
Pozrime sa, ako sa to robí v JavaScripte.
Vytvorenie reťazca JSON z premennej JavaScriptuJavaScript má vstavanú metódu JSON.stringify(), ktorá berie premennú javascriptu a vracia reťazec json predstavujúci obsah premennej. Použime napríklad predtým vytvorený objekt a skonvertujme ho na reťazec JSON.
Nakoniec, keďže JSON je identický s objektmi v JavaScripte, môžete si jednoducho vziať tento príklad a vytvoriť z neho objekt JavaScript: [e-mail chránený]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true );
Toto sa objaví na obrazovke:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [e-mail chránený]", "contents":[("productID":34,"productName":"SuperWidget","quantity":1), ("productID":56,"productName":"WonderWidget","quantity":3) ], "objednávka dokončená":true)
Všimnite si, že JSON.stringify() vypíše reťazce JSON bez medzier. Je ťažko čitateľný, ale je kompaktnejší, čo je dôležité pri odosielaní dát.
Vytvorenie premennej JavaScript z reťazca JSONExistuje niekoľko spôsobov, ako analyzovať reťazce JSON, najprijateľnejším a najbezpečnejším je použitie metódy JSON.parse(). Prevezme reťazec JSON a vráti objekt alebo pole JavaScriptu obsahujúce údaje JSON. Tu je príklad:
var jsonString = " \ ( \ "ID objednávky": 12345, \ "názov nakupujúceho": "John Smith", \ "e-mail nakupujúceho": " [e-mail chránený]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "SuperWidget", \ "množstvo": 1 \), \ ( \ "productID": 56, \ "productName": " WonderWidget", \"množstvo": 3\ ) \ ], \"objednávka dokončená": pravda \ ) \"; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);
Tu sme vytvorili premennú jsonString, ktorá obsahuje reťazec JSON z vyššie uvedených príkladov. Potom sme tento reťazec odovzdali cez JSON.parse(), aby sme vytvorili objekt obsahujúci dáta JSON, ktorý bol uložený v premennej košíka. Nakoniec skontrolujeme dostupnosť údajov a zobrazíme niektoré informácie pomocou výstražného modálneho okna.
Zobrazia sa nasledujúce informácie:
V skutočnej webovej aplikácii by váš kód JavaScript mal dostať reťazec JSON ako odpoveď zo servera (po odoslaní požiadavky AJAX), potom reťazec analyzovať a zobraziť obsah košíka používateľovi.
Vytváranie a čítanie formátu JSON pomocou PHPPHP, podobne ako JavaScript, má funkcie, ktoré vám umožňujú konvertovať premenné do formátu JSON a naopak. Pozrime sa na ne.
Vytvorenie reťazca JSON z premennej PHPJson_encode() berie premennú PHP a vracia reťazec JSON predstavujúci údaje premennej. Tu je náš príklad „košíka“ napísaného v PHP:
Tento kód vytvára presne rovnaký výsledok ako príklad JavaScriptu – platný reťazec JSON predstavujúci obsah premenných:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [e-mail chránený]","contents":[("productID":34,"productName":"SuperWidget","quantity":1),("productID":56,"productName":"WonderWidget","quantity":3) ],"orderCompleted":true)
V skutočnosti by váš PHP skript mal poslať reťazec JSON ako odpoveď na požiadavku AJAX, kde JavaScript použije JSON.parse() na premenu reťazca na premenné.
Vo funkcii json_encode() môžete zadať ďalšie parametre, ktoré vám umožnia konvertovať niektoré znaky na hex.
Vytvorenie premennej PHP z reťazca JSONPodobne ako vyššie uvedené, existuje funkcia json_decode(), ktorá vám umožňuje dekódovať reťazce JSON a vložiť obsah do premenných.
Rovnako ako v prípade JavaScriptu, tento kód vypíše nasledovné:
[e-mail chránený] WonderWidget
Štandardne json_decode() vracia objekty JSON ako objekty PHP. Podobne ako v bežnej syntaxi používame -> na prístup k vlastnostiam objektu.
Ak neskôr budete chcieť použiť údaje ako asociatívne pole, jednoducho odovzdajte druhý parameter true do funkcie json_decode(). Tu je príklad:
$cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
Výsledkom je rovnaký výsledok:
[e-mail chránený] WonderWidget
Funkcii json_decode() môžete tiež odovzdať ďalšie argumenty na určenie spracovania veľkých čísel a rekurzie.
Na záver o formáte JSONAk sa chystáte vytvárať webovú aplikáciu pomocou technológie Ajax, určite využijete formát JSON na výmenu dát medzi serverom a prehliadačom.
JSON je textový formát na zaznamenávanie údajov. Umožňuje vám reprezentovať v textovej forme jedno číslo alebo reťazec, ako aj zložité štruktúry, napríklad polia s údajmi. Používanie tohto formátu záznamu je pohodlné, pretože je čitateľný a intuitívny a zároveň vám umožňuje ukladať veľmi zložité dátové štruktúry. Navyše je kompaktnejší ako xml, takže je podľa mňa vhodnejší na výmenu dát medzi webovým prehliadačom a serverom.
Syntax JSON s príkladmiFormát json sa zvyčajne píše v 2 variantoch:
1. Postupnosť hodnôt. Napríklad sekvencia 10, 15 a „test“ vo formáte JSON by vyzerali takto:
2. Záznam vo forme párov kľúč: hodnota. Napríklad:
(„Celé meno“: „Ivanov Sergey“, „Dátum narodenia“: „03/09/1975“)
Trochu zložitejší príklad:
("Celé meno": "Ivanov Sergey", "Adresa": ("Mesto": "Moskva", "Ulica": "Pjatnitskaja", "Dom": "35") )
PHP funkcie pre prácu s formátom JSONV jazyku PHP od verzie 5.2. má len 4 funkcie:
- json_decode – dekóduje reťazec JSON (získa údaje z reťazca formátu json)
- json_encode – vráti JSON reprezentáciu údajov (konvertuje údaje na reťazec json)
- json_last_error_msg – vráti reťazec označujúci chybové hlásenie posledného volania funkcie json_encode() alebo json_decode()
- json_last_error – vráti poslednú chybu
V zásade sa väčšinou používajú iba dve funkcie: json_encode a json_decode. Nebudem zachádzať do podrobností o ich syntaxi, ďalšie podrobnosti nájdete na php.net. Príklad použitia:
$arr1 = pole(0,1,2); $json_str = json_encode($arr1); echo $json_str; // vypíše reťazec json: $arr2 = json_decode($json_str); echo $arr2; // vypíše: 1
Upozornenie: pri kódovaní údajov v ruštine do formátu JSON funkcia json_encode konvertuje ruské znaky na Unicode, t.j. nahradí ich reťazcom \uXXXX a tým sa reťazec json stane pre ľudí nečitateľným (ale zrozumiteľným pre prehliadač). Ak sa chcete vyhnúť konverzii do Unicode (napríklad pri ladení kódu), môžete jednoducho použiť možnosť JSON_UNESCAPED_UNICODE.
Aby sa počas kódovania nepridávali lomky a reťazce s číslami boli kódované ako čísla, môžete použiť JSON_UNESCAPED_SLASHES a JSON_NUMERIC_CHECK. V dôsledku toho, aby bol reťazec json čitateľný pre ľudí, urobíme napríklad toto:
$arr = array("fio" => "Ivanov Sergey", "vek" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
Bez použitia týchto možností by riadok vyzeral takto:
( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "vek": "32", "vk_/url" /vk.com\/id11111" )
a pomocou možností dostaneme čitateľný riadok:
( "fio" : "Ivanov Sergey", "vek" : 32, "vk_url" : "https://vk.com/id11111" )
Ešte jeden bod: ak chcete, aby funkcia json_decode vrátila pole pri dekódovaní reťazca json, pridajte do funkcie druhý parameter rovný true.
$json_str = "( "a":1, "b":2, "c":3)"; $obj = json_decode($json_str); // získame echo objektu $obj->a; // vypíše 1 $arr = json_decode($json_str, true); // získame asociatívne pole echo $arr["a"]; // vytlačí 1
Týmto končím môj prehľad funkcií PHP.
JavaScript funkcie pre prácu s formátom JSONZačnime tým, že formát JSON bol pôvodne vynájdený pre jazyk JavaScript a potom sa stal jednoducho samostatným textovým formátom používaným v rôznych jazykoch. Zrejme preto je syntax JSON veľmi podobná syntaxi na písanie bežných objektov a polí.
// Príklad poľa v JavaScripte arr = ; upozornenie(arr); // zobrazí 1 // Príklad objektu v JavaScripte obj = ( "meno": "Vasya", "vek": 35, "isAdmin": false ) alert(obj.name); // vytlačí "Vasya"
Funkcie JavaScriptu používané na konverziu do a z formátu JSON:
- JSON.parse - dekódovanie reťazca JSON (konvertovanie reťazca na objekty a/alebo polia)
- JSON.stringify – vracia JSON reprezentáciu údajov (prevádza objekty a/alebo polia na reťazec json)
Jednoduchý príklad dekódovania reťazca json do poľa s číslami:
Str = ""; arr = JSON.parse(str); upozornenie(arr); // vytlačí 1
Príklad prevodu (serializácie) objektu na reťazec JSON:
Obj = ( "meno": "Vasya", "vek": 35, "isAdmin": false ) alert(JSON.stringify(obj)); // zobrazí ("name":"Vasya","age":35,"isAdmin":false)
Pri serializácii (konvertovaní) objektu na reťazec JSON sa zavolá metóda toJSON tohto objektu, ak existuje. Ak neexistuje žiadna metóda, zobrazia sa všetky vlastnosti objektu. Príklad konverzie objektu pomocou metódy toJSON:
Obj = ( "meno": "Vasya", "vek": 35, "isAdmin": false, toJSON: function() ( return this.age; ) ) alert(JSON.stringify(obj)); // vytlačí 35
Príklady praktického použitia formátu JSONV skutočnosti osobne používam formát JSON v 2 hlavných situáciách:
1. Prenos údajov medzi prehliadačom a serverom pomocou požiadaviek Ajax.Napríklad máme stránku, na ktorej musíme aktualizovať údaje bez opätovného načítania stránky. Povedzme, že potrebujete informácie so zoznamom zamestnancov a ich údajmi, ktoré sa majú „stiahnuť“ zo servera.
V JavaScripte pomocou jQuery to zjednodušujeme a v prehliadači zobrazujeme údaje vo forme tabuľky:
$.getJSON("get-info.php").success(function(data) ( // požiadavka ajax, dáta zo servera budú zapísané do dátovej premennej htmlstr = "