Formát JSON: príklad a popis. Formát JSON: vytváranie údajov, použitie s dekódovaním skratiek PHP a JS Json

) a medzi samotnými servermi (softvérové ​​rozhrania HTTP). Formát JSON je tiež vhodný na ukladanie zložitých dynamických štruktúr v relačných databázach alebo vyrovnávacích pamätiach súborov.

Keďže JSON je podmnožinou syntaxe JavaScriptu, dá sa rýchlo deserializovať pomocou vstavanej funkcie eval(). Okrem toho je možné vložiť plne funkčné JavaScript funkcie. V PHP je od verzie 5.2.0 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 je postavený na dvoch štruktúrach:

  • 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ť iba ľubovoľný tvar.
  • Očíslovaný 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. Teoreticky ich všetky moderné programovacie jazyky podporujú v tej či onej forme. Keďže JSON sa používa na výmenu údajov medzi rôznymi programovacími jazykmi, má zmysel postaviť ho na týchto štruktúrach.

V JSON sa používajú nasledujúce formuláre:

  • Objekt je neusporiadaná množina párov názov/hodnota uzavretá v zložených zátvorkách ( ). Medzi názvom a hodnotou je symbol ": " a páry názov/hodnota sú oddelené čiarkami.
  • Pole (jednorozmerné) je množina hodnôt, ktoré majú sériové čísla (indexy). Pole je uzavreté v hranatých zátvorkách. Hodnoty sú oddelené čiarkami.
  • Hodnota môže byť riadok v úvodzovkách, číslo, hodnota pravda alebo falošný, objekt, pole alebo hodnotu nulový. Tieto štruktúry môžu byť vnorené do seba.
  • Reťazec je usporiadaná množina nula alebo viacerých znakov Unicode, uzavretých v dvojitých úvodzovkách, pomocou sekvencií escape spätných lomiek. Znaky sú reprezentované ako jednoduchý reťazec.
  • Názov je reťazec.

Linka veľmi podobný reťazcu v jazykoch a Jave. číslo tiež veľmi podobné číslu C alebo Java, až na to, že sa používa iba desiatkový formát. Medzi ľubovoľné dva znaky je možné vložiť medzery.

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

( "firstName" : "Ivan" , "lastName" : "Ivanov" , "address" : ( "streetAddress" : "Moskovskoe sh., 101, apt. 101" , "mesto" : "Leningrad" , "postalCode" : 101101 ), "phoneNumbers" : [ "812 123-1234" , "916 123-4567" ] )

V XML by takáto štruktúra vyzerala asi takto:

Ivan Ivanov Moskovskoe sh., 101, apt. 101 Leningrad 101101 812 123-1234 916 123-4567

812 123-1234 916 123-4567

Porovnanie s YAML

Funkčne aj syntakticky je JSON podmnožinou jazyka YAML. Konkrétne špecifikácia YAML 1.2 uvádza, že „akýkoľvek súbor JSON je platným súborom YAML“. Najbežnejší analyzátor YAML dokáže spracovať aj JSON. Špecifikácia YAML pred verziou 1.2 úplne nepokrývala JSON, predovšetkým kvôli nedostatku natívnej podpory pre UTF-32 v YAML, ako aj požiadavke na medzeru za oddeľovačom čiarky. Špecifikácia JSON navyše obsahovala komentáre štýlu /* */.

Najdôležitejším rozdielom v YAML je súbor rozšírení syntaxe, ktoré nemajú v JSON analógy:

Relačné: YAML podporuje relačné údaje: v dokumente YAML môžete odkazovať na kotvu, ktorá sa vyskytla skôr v súbore/streame. Rekurzívne štruktúry môžu byť vyjadrené týmto spôsobom. Rozšíriteľnosť: YAML podporuje rozšíriteľné dátové typy nad rámec primitív (t. j. reťazce, čísla, booleany). Bloky: V YAML je k dispozícii syntax odsadených blokov; umožňuje popísať štruktúrované dáta bez použitia zbytočných symbolov (všetky druhy zátvoriek, úvodzoviek atď.).

Schéma JSON

Schéma JSON je jedným z jazykov na popis štruktúry dokumentu JSON. Používa syntax JSON. Na základe konceptov XML Schema, RelaxNG, Kwalify. Schéma JSON je samopopisný jazyk: pri použití sa na spracovanie údajov a popis ich platnosti môžu použiť rovnaké nástroje na serializáciu/deserializáciu.

Použitie JSON v Ajaxe

Nasledujúci príklad kódu Javascript ukazuje, ako môže prehliadač použiť XMLHttpRequest na vyžiadanie objektu vo formáte JSON zo servera (strana servera programu je vynechaná; musí obsahovať kód, ktorý odosiela údaje ako reťazec JSON ako odpoveď na požiadavky od url).

Var the_object; var http_request = new XMLHttpRequest() ; http_request.open("GET", url, true); http_request.send(null); http_request.onreadystatechange = function () ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse ( http_request.responseText ) ; ) else ( alert( "Vyskytol sa problém s adresu URL." ) ; ) http_request = null; ) );

Upozorňujeme, že tento príklad použitia XMLHttpRequest nie je univerzálny pre všetky prehliadače (pre prehliadače založené na Internet Explorer, Opera, Safari a Mozilla by mali existovať určité rozdiely v kóde). Použitie XMLHttpRequest je obmedzené z dôvodu rovnakej politiky pôvodu: URL odpovede na požiadavku musí byť v rovnakej doméne DNS ako server, na ktorom sa nachádza stránka požadujúca odpoveď. Alternatívou je prístup JSONP, ktorý zahŕňa použitie zakódovaného volania funkcie prenášaného medzi klientom a serverom, aby klient mohol načítať údaje zakódované vo formáte JSON z domén tretích strán a upozorniť volajúceho na dokončenie, hoci to prináša určité bezpečnostné riziká a dodatočné požiadavky na server.

Alternatívne môže kód stránky používať prvky na asynchrónne vyžiadanie údajov JSON alebo jednoducho . Tieto prístupy boli bežné pred rozšírenou podporou XMLHttpRequest.

Rovnakú politiku pôvodu môžete použiť aj na prenos údajov JSON pomocou dynamických značiek, výsledkom je však zraniteľný kód. Ako bezpečnejšia alternatíva bolo navrhnuté použiť JSONRequest.

Bezpečnostné otázky

Aj keď je JSON navrhnutý na prenos údajov v serializovanej forme, jeho syntax sa riadi syntaxou JavaScriptu, čo vytvára množstvo bezpečnostných problémov. Na spracovanie údajov prijatých z externého zdroja vo formáte JSON sa na ne často použije funkcia eval() bez predbežného overenia.

JavaScript eval()

Keďže sa JSON javí ako syntakticky správny kus kódu JavaScript, najjednoduchším spôsobom analýzy údajov JSON v programe JavaScript je použitie vstavanej funkcie JavaScript eval(), ktorá je navrhnutá na vykonávanie výrazov JavaScript. Pri tomto prístupe nie je potrebné používať ďalšie analyzátory.

Technika eval() robí systém zraniteľným, ak zdroj použitých údajov JSON nie je dôveryhodný ( Angličtina). Takéto údaje môžu byť škodlivým kódom JavaScript pre útoky Code Injection ( Angličtina). Pomocou tejto zraniteľnosti je možné ukradnúť údaje a sfalšovať autentifikáciu. Zraniteľnosť však možno eliminovať použitím dodatočných nástrojov na overenie údajov. Napríklad pred vykonaním eval() možno údaje prijaté z externého zdroja overiť pomocou regulárnych výrazov. RFC, ktorý definuje JSON, navrhuje použiť nasledujúci kód na kontrolu, či je v súlade s formátom JSON

Var my_JSON_object = ! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\] )*"/g , "" ) ) ) && eval("(" + text + ")" );

Ako bezpečnejšia alternatíva k eval() bola navrhnutá nová funkcia parseJSON(), ktorá dokáže spracovať iba údaje JSON. Bol predstavený vo verzii 4 štandardu ECMAScript a je popísaný v článku „JSON: Low-Fat Alternative to XML“. V súčasnosti je k dispozícii ako knižnica JavaScript a bude súčasťou piateho vydania ECMAScript.

Vložený JSON

Najnovšie verzie webových prehliadačov majú vstavanú podporu pre JSON a sú schopné ju spracovať bez volania funkcie eval(), čo vedie k opísanému problému. Spracovanie JSON je v tomto prípade zvyčajne rýchlejšie. Takže v júni 2009 mali nasledujúce prehliadače vstavanú podporu JSON:

Najmenej päť populárnych knižníc JavaScript používa inline JSON, ak je k dispozícii:

Falšovanie požiadavky viacerých domén

Nedostatočné používanie JSON robí stránky zraniteľnými voči falšovaniu požiadaviek medzi stránkami (CSRF alebo XSRF). Pretože značka umožňuje použitie zdroja, ktorý nepatrí do rovnakej domény ako zdroj, ktorý ju používa, umožňuje spúšťanie kódu pod zámienkou údajov JSON v kontexte ľubovoľnej stránky, čo umožňuje kompromitovať heslá alebo iné citlivé informácie používateľov oprávnených na inú stránku.

Zdá sa, že ide o problém iba vtedy, ak údaje JSON obsahujú citlivé informácie, ktoré by mohla narušiť tretia strana, a ak sa server spolieha na politiku jedného pôvodu ( Angličtina), blokovanie prístupu k údajom, keď sa zistí externá požiadavka. To nie je problém, ak server určí platnosť požiadavky a poskytne údaje len vtedy, ak sú správne. Na určenie toho nie je možné použiť súbory cookie HTTP. Výhradné používanie súborov cookie HTTP sa používa na falšovanie požiadaviek medzi stránkami.

JSONP a JSONPP

JSONP (JSON Padding) alebo „JSON with padding“ je rozšírenie JSON, keď je ako vstupný argument zadaný názov funkcie spätného volania.

Technológia je založená na skutočnosti, že bezpečnostná politika prehliadača umožňuje použitie značky na prístup k iným serverom, než je server, z ktorého bola stránka načítaná.

Bez použitia technológie JSONP (to znamená iba s použitím kódovania údajov JSON) môže server vrátiť iba údaje. Napríklad takto:

("papier": "A4", "počet": 5)

Sú to však iba údaje a nemôžu ovplyvniť prehliadač.

Pomocou techniky JSONP sa názov funkcie spätného volania odovzdá serveru tretej strany na linke volania (GET):

Tu parameter jsonp obsahuje názov funkcie spätného volania parseResponse.

Teraz môže zahraničný server example.com vrátiť nasledujúci kód:

ParseResponse(( "papier" : "A4" , "počet" : 5 ) )

Kód teraz volá funkciu javascript prvej domény.

Táto myšlienka bola pôvodne navrhnutá na blogu MacPython v roku 2005 a v súčasnosti ju používa mnoho aplikácií Web 2.0, ako sú aplikácie Dojo Toolkit, aplikácie Google Toolkit a webové služby zanox. Ďalšie rozšírenia tohto protokolu boli navrhnuté tak, aby zahŕňali ďalšie argumenty, ako je podpora JSONPP pre webové služby S3DB.

Pretože JSONP používa značky skriptov, hovory sú v podstate otvorené svetu. Z tohto dôvodu môže byť JSONP nevhodný na ukladanie citlivých údajov.

Povolenie značiek skriptov zo vzdialených lokalít im umožňuje prenášať akýkoľvek obsah na lokalite. Ak má vzdialená lokalita zraniteľné miesta, ktoré umožňujú vloženie JavaScriptu, môže byť nimi ovplyvnená aj pôvodná lokalita.

JSONPP (parametrizovaný JSON s výplňou) Parametrizovaný JSON s výplňou - vývoj myšlienky JSONP

JSONPP obsahuje zdrojovú URL, názov funkcie, ktorá spracuje údaje JSON, riadok pre eval po prijatí údajov a riadok pre eval po dokončení spracovania údajov:

JSON_call(SRC, JSONP, JSONPP, ONLOAD) ;

nakoniec sa otočí

Ans = JSONP(SRC) ( eval(JSONPP(ans) ) ; eval(ONLOAD) ; )

Vo všeobecnosti nie je počet parametrov pre samotný nápad JSONPP dôležitý. SRC, JSONP, JSONPP (a ich spracovanie na strane servera a potom na strane klienta) stačia na to, aby to bol JSONPP.

Pozrime sa na príklad práce so službou S3DB.

Funkcia s3db_jsonpp_call(src, next_eval) ( var call = "call_" + Math .random () .toString () .replace (/\./g, "" ) ; var headID = document.getElementsByTagName ("head" ) [ 0 ] ; var script = document.createElement ("script" ) ; script.id = volanie; script.type = "text/javascript" ; // pomocou vyplneného, ​​parametrizovaného json src = src+ "&format=json&jsonp=s3db_jsonpp&jsonpp=" + next_eval+ "&onload=remove_element_by_id("" + script.id + "")" ; script.src = src; headID.appendChild (skript) ; // načítanie odpovede ) funkcia s3db_jsonpp(ans, jsonpp) ( eval(jsonpp) ; návrat ans ; ) function remove_element_by_id(id) ( var e = document.getElementById (id) ; e.parentNode .removeChild (e) ; return false ; )

V príklade funkcia s3db_jsonpp_call() vytvorí prvok skriptu v DOM v hlavovej časti, ktorého src zodpovedá volaniu JSONPP.

Po prijatí odpovede zo servera sa zavolá s3db_jsonpp() - odovzdáva sa v parametroch volania, ako by to malo byť podľa pravidiel JSONP.

Vo vnútri s3db_jsonpp() sa spustí eval(jsonpp) a vráti hodnotu ans.

Volanie eval(onload) vedie k vykonaniu remove_element_by_id() s id vytvoreného skriptu v hlave a v konečnom dôsledku k jeho vymazaniu, pretože sa aj tak nepoužije, keďže id v príklade bolo vygenerované náhodne hneď na začiatku funkciu s3db_jsonpp_call(). Toto volanie je v odpovedi servera.

Odkazy na objekt

Štandard JSON nepodporuje referencie na objekty, ale Dojo Toolkit ukazuje, ako môže štandardný JSON podporovať takéto referencie pomocou ďalších konvencií. Najmä modul dojox.json.ref poskytuje podporu pre niekoľko foriem odkazov, vrátane kruhových, viacnásobných, medzidokumentových a lenivých odkazov.

Pozri tiež Poznámky
  • YAML nie je značkovací jazyk (YAML™) verzia 1.2 (angličtina) . - Pracovný návrh 2008-05-11. (nedostupný odkaz - príbeh) Získané 24. septembra 2009.
  • . RedHanded (7. apríla 2005). Získané 25. septembra 2012.
  • Json.Com Návrh schémy JSON (nedostupný odkaz - príbeh)
  • RFC 4627
  • JSON: Beztuková alternatíva k XML. Archivované
  • json2.js (angličtina) . Archivované z originálu 12. februára 2012. Získané 24. septembra 2009.
  • Použitie vloženého JSON.
  • Vložený JSON v IE8. Archivované z originálu 12. februára 2012.
  • Webové špecifikácie podporované v Opera Presto 2.5 (angličtina) (10. marca 2010). Archivované z originálu 12. februára 2012. Získané 29. marca 2010.
  • ES 3.1 implementácia objektu JSON.
  • Lístok #4429lang=sk . Archivované z originálu 12. februára 2012.
  • Vstupenka č. 4429 (22. mája 2009). Archivované z originálu 12. februára 2012. Získané 3. júla 2009.
  • Lístok #8111lang=sk . Archivované z originálu 12. februára 2012.
  • Jadro MooTools a ďalšie 1.3.1. Archivované z originálu 12. februára 2012.
  • YUI 2: Nástroj JSON (1. septembra 2009). Archivované z originálu 12. februára 2012. Získané 22. októbra 2009.
  • Naučte sa JSON (7. apríla 2010). Archivované z originálu 12. februára 2012. Získané 7. apríla 2010.
  • Jeremy Grossman Pokročilé techniky útoku na webové aplikácie využívajúce GMail. Bezpečnosť WhiteHat. Archivované z originálu 12. februára 2012. Získané 23. septembra 2009.
  • z __future__ import * » Vzdialený JSON - JSONP . Bob.pythonmac.org. Archivované z originálu 12. februára 2012. Získané 8. septembra 2008.
  • Almeida, Jonas (11. júna 2008). "JSON, JSONP, JSONPP? "(S3DB). Získané 26. 4. 2009.
  • RIAspot JSON P pre Cross Site XHR .(nedostupný odkaz - príbeh)
  • Odkazovanie na JSON v Dojo. Archivované z originálu 12. februára 2012.
  • Odkazy
    • Domovská stránka oficiálneho formátu v ruštine
    • json.js, json2.js je knižnica vyvinutá Douglasom Crockfordom na prácu s údajmi JSON v JavaScripte. Rozšíri objekt o metódu toJSONString, ktorá je potom prítomná v ľubovoľnom objekte, a skonvertuje ho na reťazec formátu JSON.
    • json-rpc.org (angličtina)
    Značkovacie jazyky dokumentovKancelárske dokumenty

    JSON alebo JavaScript Object Notation je formát, ktorý implementuje neštruktúrovanú textovú reprezentáciu štruktúrovaných dát založenú na princípe párov kľúč-hodnota a usporiadaných zoznamov. Hoci JSON pochádza z JavaScriptu, je podporovaný vo väčšine jazykov, či už natívne alebo pomocou špeciálnych knižníc. Typicky sa Json používa na výmenu informácií medzi webovými klientmi a webovým serverom.

    Za posledných 15 rokov sa JSON stal formálnym štandardom výmeny údajov a používa sa prakticky všade na internete. Dnes ho používajú takmer všetky webové servery. Ďalším dôvodom tejto popularity bola skutočnosť, že mnoho databáz podporovalo JSON. Moderné relačné databázy ako PostgreSQL a MySQL teraz podporujú ukladanie a export údajov v JSON. Databázy ako MongoDB a Neo4j tiež podporujú JSON, hoci MongoDB používa mierne upravenú verziu JSON. V tomto článku sa pozrieme na to, čo je JSON, jeho výhody oproti XML, jeho nevýhody a kedy je najlepšie ho použiť.

    Aby ste pochopili, prečo je formát JSON potrebný a ako funguje, potrebujete prax. Najprv sa pozrime na tento príklad:

    {
    "firstName": "Jonathan",
    "priezvisko": "Freeman",
    "loginCount": 4,
    "isWriter": pravda,
    "worksWith": ["Spantree Technology Group", "InfoWorld"],
    "domáce zvieratá": [
    {
    "meno": "Lilly",
    „typ“: „mýval“
    }
    ]
    }

    V tomto rámci sme jasne definovali niektoré atribúty človeka. Najprv sme zisťovali meno, priezvisko, počet prihlásení do systému, či je táto osoba spisovateľom, zoznam firiem, s ktorými spolupracuje a zoznam domácich miláčikov. Túto alebo podobnú štruktúru je možné preniesť zo servera do webového prehliadača alebo mobilnej aplikácie, ktorá si potom s týmito údajmi môže robiť, čo potrebuje, napríklad ich zobraziť alebo uložiť.

    JSON je všeobecný dátový formát s minimálnym počtom typov hodnôt – reťazce, čísla, boolovské hodnoty (jedna alebo nula), zoznamy, objekty a null. Aj keď je JSON podmnožinou JavaScriptu, väčšina populárnych programovacích jazykov má tieto typy údajov, vďaka čomu je JSON dobrým kandidátom na odovzdávanie údajov medzi programami napísanými v rôznych jazykoch.

    Prečo by ste mali používať JSON?

    Aby sme pochopili užitočnosť a dôležitosť JSON, musíme trochu porozumieť histórii interaktivity na internete. Začiatkom roku 2000 sa interaktivita webových stránok začala meniť. Prehliadač vtedy slúžil len na zobrazovanie informácií a všetku prácu pri príprave obsahu na zobrazenie robil webový server. Keď používateľ klikol na tlačidlo v prehliadači, bola odoslaná požiadavka na server, kde bola zostavená a odoslaná HTML stránka pripravená na zobrazenie. Tento mechanizmus bol pomalý a neúčinný. To vyžadovalo, aby prehliadač znova vykreslil všetko na stránke, aj keď sa zmenila malá časť údajov.

    V tom čase boli prenosy spoplatnené na základe množstva prenesených dát, takže vývojári pochopili, že opätovné načítanie celej stránky je veľmi drahé a zvažovali nové technológie na zlepšenie používateľského rozhrania. Potom sa možnosť vytvárať webové požiadavky na pozadí, ktorá bola pridaná v Internet Exploreri 5, ukázala ako celkom životaschopný prístup k postupnému načítavaniu údajov na zobrazenie. Namiesto opätovného načítania stránky kliknutím na tlačidlo jednoducho vydáte webovú požiadavku, ktorá sa spustí na pozadí. Obsah bude aktualizovaný hneď po načítaní. Dá sa ovládať pomocou JavaScriptu, univerzálneho programovacieho jazyka pre prehliadače.

    Pôvodne sa dáta prenášali vo formáte XML, ale v JavaScripte sa to ťažko používalo. JavaScript už mal objekty, ktoré sa používali na reprezentáciu údajov v jazyku, takže Douglas Crockford prevzal syntax objektov JS a použil ju ako špecifikáciu pre nový formát výmeny údajov s názvom JSON. Tento formát bol oveľa jednoduchšie čítať a analyzovať v prehliadači JavaScript. Čoskoro vývojári začali používať JSON namiesto XML.

    Rýchla výmena dát JSON je v súčasnosti de facto štandardom pre prenos dát medzi serverom a klientom, mobilnými aplikáciami a dokonca aj internými systémovými službami.

    JSON vs XML

    Ako som povedal vyššie, hlavnou alternatívou k JSON bolo a je XML. XML sa však v nových systémoch stáva menej bežným. A je veľmi ľahké pochopiť prečo. Nižšie je uvedený príklad zápisu údajov, ktoré ste videli vyššie v Json, cez XML:


    Jonathan
    Freeman
    4
    pravda

    Spantree Technology Group
    InfoWorld

    Lilly
    medvedík čistotný


    Okrem redundancie kódu, ktorý v podstate zaberal dvakrát toľko miesta na zápis údajov, prináša XML aj určitú nejednoznačnosť pri analýze štruktúry údajov. Konverzia XML na objekt JavaScript môže trvať desiatky až stovky riadkov kódu a vyžaduje jemné doladenie pre každý analyzovaný objekt. Konverzia JSON na objekt JavaScript sa vykonáva v jednom riadku a nevyžaduje žiadne predchádzajúce znalosti o objekte, ktorý sa analyzuje.

    Obmedzenia JSON

    Aj keď je JSON relatívne komprimovaný a flexibilný dátový formát, s ktorým sa ľahko pracuje v mnohých programovacích jazykoch, má určité nevýhody. Tu sú niektoré obmedzenia:

    • Žiadna štruktúra. Na jednej strane to znamená, že máte úplnú flexibilitu pri prezentovaní údajov akýmkoľvek spôsobom, ktorý chcete. Na druhej strane môžete ľahko ukladať neštruktúrované dáta.
    • Iba jeden typ čísel. Podporovaný je formát IEEE-754 s pohyblivou rádovou čiarkou a dvojnásobnou presnosťou. To je dosť veľa, ale nemôžete použiť rôzne číselné typy, ktoré majú iné jazyky.
    • Žiadny typ dátumu. vývojári musia používať reťazcové reprezentácie dátumov, čo môže spôsobiť nekonzistentnosť formátovania. Alebo použite ako dátum počet milisekúnd, ktoré uplynuli od začiatku epochy Unixu (1. januára 1970).
    • Žiadne komentáre – Priamo v kóde nebudete môcť anotovať polia, ktoré ich vyžadujú.
    • Podrobný – Aj keď je JSON menej podrobný ako XML, nie je to najvýstižnejší formát na výmenu údajov. Pre špičkové alebo špecializované služby budete chcieť použiť efektívnejšie formáty.
    Kedy by ste mali použiť JSON?

    Ak vyvíjate softvér, ktorý spolupracuje s prehliadačom alebo natívnou mobilnou aplikáciou, je lepšie použiť JSON. Používanie XML je zastarané. Pre komunikáciu medzi servermi nemusí byť JSON veľmi efektívny a je lepšie použiť serializačný rámec podobný Apache Avro alebo Apache Thrift. Ani tu nie je JSON zlou voľbou a dokáže vám poskytnúť všetko, čo potrebujete. Neexistuje však presná odpoveď, čo si vybrať.

    Ak používate databázy MySQL, váš program bude vo veľkej miere závisieť od toho, čo sa v databáze robí. V relačných databázach, ktoré podporujú JSON, sa považuje za osvedčený postup používať ho čo najmenej. Relačné databázy boli navrhnuté pre dáta so špecifickou schémou. Väčšina z nich už síce podporuje dátový formát JSON, no výkon práce s ním bude výrazne nižší.

    závery

    JSON je dátový formát zameraný predovšetkým na odosielanie dát medzi webovými servermi a prehliadačmi alebo mobilnými aplikáciami. Formát má jednoduchý dizajn a flexibilitu, je ľahko čitateľný a zrozumiteľný a s takýmito údajmi sa dá jednoducho pracovať vo väčšine programovacích jazykov. Neprítomnosť striktnej schémy umožňuje flexibilitu formátu, ale táto flexibilita môže niekedy sťažiť čítanie a pochopenie údajov.

    Možno budete mať problém pracovať s JSON v jazykoch so silným typom, ako je Scala alebo Elm, ale rozšírené prijatie formátu znamená, že existujú pomôcky a knižnice, ktoré vám pomôžu aj pri zložitých problémoch. Teraz viete, čo je json a ako ho používať.

    Č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, čo je 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:

    ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [chránený e-mailom]", "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:

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [chránený e-mailom]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true );

    Porovnanie JSON s XML

    Vo väčšine prípadov si predstavíte JSON ako alternatívu k XML – aspoň v rámci webových aplikácií. Koncept Ajax pôvodne využíva XML na výmenu údajov medzi serverom a prehliadačom, ale v posledných rokoch sa JSON stal populárnejším na prenos údajov ajax.

    Aj keď je XML osvedčenou technológiou, ktorú používa mnoho aplikácií, výhodou formátu JSON je, ž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 [chránený e-mailom] 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.

    var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [chránený e-mailom]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true ); alert (JSON.stringify(cart));

    Toto sa objaví na obrazovke:

    ("orderID":12345,"shopperName":"John Smith","shopperEmail":" [chránený e-mailom]", "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": " [chránený e-mailom]", \ "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":" [chránený e-mailom]","contents":[("productID":34,"productName":"SuperWidget","quantity":1),("productID":56,"productName":"WonderWidget","quantity":3) ],"orderCompleted":true)

    V skutočnosti by váš PHP skript mal odoslať 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é:

    [chránený e-mailom] 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:

    [chránený e-mailom] 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.


    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 (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": " [chránený e-mailom]", "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": " [chránený e-mailom]" Vlastnosť s názvom "shopperEmail" s hodnotou reťazca " [chránený e-mailom]" "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": " [chránený e-mailom]", "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 [chránený e-mailom] 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": " [chránený e-mailom]", "contents": [ ( "productID": 34, "productName": "super produkt", "množstvo": 1 ), ( "productID": 56, "productName": "zázračný produkt", "množstvo": 3 ) ], "orderCompleted": true ); alert (JSON.stringify(cart));

    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": " [chránený e-mailom]", \ "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ží ho 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":" [chránený e-mailom]","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 odovzdať rôzne príznaky ako druhý argument. 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í:

    [chránený e-mailom] 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:

    [chránený e-mailom] 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.