Formát JSON: Príklad a popis: SYL.ru

JSON je skratka pre Java Script Object Notation, čo je formát, ktorý používa ľudsky čítaný text na prenos dát, ktoré sa skladajú z párov hodnôt atribútov. Ide o najbežnejší formát údajov používaný pre asynchrónnu komunikáciu medzi prehliadačom a serverom, ktorý vo veľkej miere nahrádza XML (AJAX).

JSON je dátový formát nezávislý od jazyka, ktorý bol získaný z jazyka javascript. Od roku 2017 používa veľa programovacích jazykov kód na generovanie a analýzu údajov iba v ňom. Názvy súborov JSON používajú rozšírenie .json.

História tvorby

Spočiatku formát JSON vyvinul Douglasa Crockforda na začiatku nuly a v budúcnosti ho definovali dva konkurenčné štandardy (RFC 7159 a ECMA-404). Štandard ECMA popisuje iba platnú syntax, zatiaľ čo RFC pokrýva niektoré základy bezpečnosti a interoperability. Okrem toho existuje štandardný RFC 7493, ktorý definuje obmedzený profil, známy ako I-JSON (skratka z "Internet JSON"). Snaží sa prekonať niektoré interakcie. Každý takýto dokument je platným dokumentom JSON. Potreba vytvorenia tohto formátu vyrastala z potreby skutočného komunikačného protokolu medzi serverom a prehliadačom implementovaný v reálnom čase bez použitia doplnkov (ako sú napríklad aplikácie Flash alebo Java applety).

Vývoj a aplikácia

Ako už bolo spomenuté, Douglas Crockford ako tvorca StateSoftware prvýkrát identifikoval a popularizoval formát JSON. Následne sa spoluzakladatelia dohodli na vytvorení systému, ktorý využíva štandardné možnosti prehliadača,a poskytuje úroveň abstrakcie pre vývojárov na vytváranie aplikácií s nepretržitou dvojstrannou konektivitou na webový server. Jednalo sa o schopnosť držať dve HTTP pripojenie otvorené a spracovať ich na štandardný čas výmeny prezeranie dát, pokiaľ nie sú vykonané. Spoluzakladatelia konala diskusia pri okrúhlom stole a hlasoval, aby vymenovali dátový formát JSML alebo JSON, a určí typ licencie, pod ktorým bude novinkou byť k dispozícii. Formát je v súčasnosti otvorený.

Praktické využitie

Internetová stránka JSON.org bola spustená v roku 2002. V decembri 2005 Yahoo! začal ponúkať niektoré z jeho webových služieb v tomto formáte. Spoločnosť Google začala používať kanály JSON na svoj webový protokol GData až v decembri 2006. Prvý formáte JSON súbor určený pre jazyk JavaScript podmnožina skriptovacieho (najmä norma ECMA-262 3rd Edition-december) a je zvyčajne používaný s ním. Nezáleží však na údajoch o jazykovom formáte. Kód pre analýzu a generovanie údajov JSON je dostupný v mnohých programovacích jazykoch. Stránka JSON obsahuje všetky knižnice. Aj napriek tomu, že JSON formáte pôvodne inzerovanej on-line a bol považovaný za prísne podmnožina JavaScript a ECMAScript, on občas dovolí niektoré znaky nie sú testované na linkách, ktoré sú neprijateľné v radoch javascript a ECMAScript.

sama JSON sa stal medzinárodným štandardom ECMA v roku 2013 ako štandardné ECMA-404, ktorý v tom istom roku bol použitý v RFC 7158 ako referenciu. V roku 2014, RFC 7159 bol hlavný odkaz do JSON pomocou internetu (napr MIMEaplikácie /JSON).

dátové typy, syntaxe a príklad

Hlavné typy dát JSON je:
  • Číslo: desiatkovej s nápisom, ktoré môžu zahŕňať desatinnú časť a môže používať exponenciálny notáciu E, ale môže zahŕňať non-číslo (napríklad, NaN). Formát nerozlišuje medzi cieľmi a číslami s pohyblivou čiarou. javascript používa formát dvojitého plávajúceho bodu pre všetky číselné hodnoty, ale iné jazyky implementované JSON ich môžu kódovať inak.
  • Riadok: Záznam s nulovými alebo veľkými znakmi Unicode. Riadky sú oddelené dvojitými kótovanými znakmi a syntax podporujú obrátenou lomkou.
  • Literály: každá hodnota je pravdivá alebo nepravdivá.
  • Array: usporiadaný zoznam s nulovými alebo viac hodnotami, z ktorých každý môže byť akéhokoľvek typu. Polia používajú hranaté zátvorky čiarkami.
  • objektu sady neusporiadané párov názov /hodnota, kde názvy (nazývané aj klávesy) sú reťazce. Pretože objekty navrhnuté tak, aby reprezentovať asociatívnych polí, sa odporúča (ale nevyžaduje), aby každý jedinečný kľúč bol vo vnútri. Objekty sú rozdelené kučeravými zátvorkami a čiarami rozdeľte jednotlivé čiarky, zatiaľ čo vo vnútri každého z nich dvojbodka vymaže kľúč alebo meno z jeho hodnoty.
  • Null: Prázdna hodnota s použitím slova null.
  • Limitované medzery sú povolené a môžu byť Videli v okolí alebo medzi syntaxe prvkami (hodnoty a interpunkcia, ale nie v zmysle linky). Na tento účel majú iba štyri špeciálne znakypovažované za priestory: priestor, karta horizontálne, prívodnom potrubí a lomkou. Najmä musí značka poradí bajtov negeneruje zodpovedajúce implementácia (aj keď to môže byť užívaný pri parsovanie JSON). Dotazník JSON neposkytuje syntax pre komentáre. Prvá verzia (ako je uvedený v RFC 4627), vyžaduje, aby platný dokument pozostával iba z objektu alebo poľa, ktoré by mohli obsahovať iné typy v nich. Tento JSON formátu, ktorého príklad je možné nájsť na webových stránkach starších nie sú v súčasnosti v prevádzke.

    Problémy s prenosom dát

    Aj keď Douglas Krokford spočiatku tvrdil, že JSON je prísna podmnožina JavaScript, ktorého špecifikácia skutočne umožňuje vytvárať dokumenty v čitateľnom JavaScriptu. Najmä JSON umožňuje reťazec hodnota U + 2028 Unicode LINE SEPARATOR U + 2029 a ODS SEPARATOR vyzerala neэkranyrovannыmy citovanej v radoch a JavaScriptu - nie. Je to spôsobené tým, že JSON zakazuje iba "kontrolné znaky". Pre maximálnu kompatibilitu musia byť tieto znaky zobrazené s reverznou lomkou. Táto jemnosť je dôležitá pri vytváraní JSONP.

    Formát JSON: čo otvoriť?

    JSON dokumenty môžu byť kódované v UTF-8, UTF-16 alebo UTF-32 kódovanie predvolený - UTF-8. Tieto normy podporujú úplnú sadu Unicode ", vrátane postáv mimo základného viacjazyčného lietadla (od U ​​+ 10000 k U + 10FFFF) Ale ak tienený, musia byť tieto znaky napísané pomocou pary náhrady UTF-16. - detaily, ktoré preskočili niektoré Analyzátory formátu JSON Čo otvoriť a ako to budePrečítajte si tento súbor? Čísla v tomto formáte sú agnostiky týkajúce sa ich prezentácie v programovacích jazykoch. Neexistuje žiadny rozdiel medzi celé číslo a pohyblivou čiarkou: niektoré implementácie môžu považovať 42420 a 4.2 E + 1 za rovnaké číslo, zatiaľ čo iné to nemusia robiť. Navyše neexistujú žiadne požiadavky na problémy, ako je pretečenie, nedostatočnosť, strata presnosti alebo zaokrúhľovanie. Formát JSON navyše nemôže povedať o spracovaní podpisových núl bez ohľadu na to, či je 0,0 alebo iný ako -0,0. Väčšina implementácií, ktoré používajú štandard s pohyblivým bodom IEEE 754 vrátane javascriptu, si zachová nuly, ale nie všetky implementácie JSON to dokážu.
    Použitie javascriptu
    Pretože formát JSON bol odvodený z javascriptu a jeho syntax (v podstate) je podmnožinou jazyka, môže javascripteval analyzovať údaje JSON. Z dôvodu problémov s rozdeleniami reťazecov unicode popísaných v predchádzajúcej časti musí funkcia eval vykonať výmenu. To je nebezpečné, ak reťazec nie je správne overený. Namiesto toho musíte použiť knižnicu analyzátora JSON alebo podporu javascript na čítanie a zápis JSON. Správne implementovaný analyzátor prijíma iba platný formát JSON, ktorý je opísaný v systéme, čím zabraňuje neúmyselnému vykonaniu potenciálne škodlivého kódu. Od roku 2010 majú takéto prehliadače podporu pre analýzu a vyloženie vo formáte JSON pre Firefox a Internet Explorer.

    Nepodporované vlastné dátové typy

    Syntax javascript definuje niekoľko vlastných dátových typov, ktoré nie sú zahrnuté vJSON Standard: mapa, inštalácia, dátum, chyba, regulárny výraz, funkcia a niektoré ďalšie. Tieto typy údajov typu javascript musia byť zastúpené niektorými inými formátmi, pričom oba programy súhlasia so spôsobom konverzie medzi typmi. Dnes existujú niektoré štandardy defacto, napríklad konvertovanie dátumu na reťazec, ale žiaden z nich nie je všeobecne akceptovaný. Iné jazyky môžu mať odlišnú sadu vlastných typov, ktoré treba opatrne serializovať, aby ste mohli riešiť tento typ konverzie.

    schéma JSON

    Schéma sa používa na určenie štruktúry údajov JSON na účely overovania, dokumentácie a správy interakcií. Poskytuje druh zmluvy o údajoch požadovaných aplikáciou a spôsobu jej úpravy. Schéma je založená na koncepciách z XML schémy (XSD), ale je jej vlastná. Rovnako ako u XSD, rovnaké nástroje serializácie /deserializácie sa používajú pre schému aj údaje. Schéma je on-line projekt, ktorý je momentálne vo verzii 5 (vydané 13. októbra 2016). Existuje niekoľko validátorov dostupných pre rôzne programovacie jazyky, z ktorých každá má rôzne úrovne súladu. Neexistujú žiadne štandardné prípony súborov, ale niektorí experti navrhujú schvaľovať .schema.json.

    Typ MIME

    Oficiálny typ MIME pre text JSON je "application /json". Napriek skutočnosti, že väčšina moderných implementácií prijala oficiálny typ MIME, mnohé aplikácie naďalej poskytujú staršiu podporu iným typom MIME. Mnohí poskytovatelia služieb, prehliadače, servery, webové aplikácie, knižnice, rámce a rozhrania API používajú, čakajú alebo rozpoznávajú typ MIME, ktorého obsah vyzerá"Text /json" alebo "text /javascript". Známe príklady zahŕňajú vyhľadávacie API Google, Yahoo !, Flickr, Facebook API, DojoToolkit 0.4 atď.

    JSON-RPC

    JSON-RPC je protokol vzdialeného volania procedúr (Remote Procedure Call Protocol - RPC) založený na JSON, vytvorený ako náhrada XML-RPC alebo SOAP. Jedná sa o jednoduchý protokol, ktorý definuje iba niekoľko typov údajov a príkazov. Umožňuje systému odosielať správy (informácie na server, ktorý nevyžaduje odpoveď) a niekoľko volaní na server, ktoré nemožno odpovedať v žiadnom poradí.

    AJAJ

    Asynchrónne javascript a JSON (alebo AJAJ) odkazujú na rovnakú dynamickú metodológiu webových stránok ako Ajax, ale namiesto XML je nevyhnutný presný formát dát JSON. AJAJ je technológia vývoja webu, ktorá webovej stránke umožňuje po stiahnutí do prehliadača požadovať nové údaje. Zvyčajne ich zobrazuje zo servera v reakcii na akcie používateľov na tejto stránke. Napríklad, čo používateľ zadá do vyhľadávacieho poľa, klientský kód potom pošle na server, ktorý bezprostredne zodpovedá rozbaľovaciemu zoznamu príslušných databázových prvkov.

    Bezpečnostné otázky

    Text vo formáte JSON je definovaný ako objekt serializácie údajov. Jeho dizajn, ako nezmazateľná podmnožina jazyka skriptov javascript, vytvára niekoľko bezpečnostných problémov. Zameriavajú sa na používanie jazyka JavaScriptu na dynamické vykonávanie textu JSON ako vstavaného javascriptu. Toto podáva program falošné alebo škodlivé skripty. Je to vážny problém pri práci s údajmi získanými z Internetu. Táto jednoduchá a populárna, ale riziková metóda využíva funkčnú kompatibilitujavascripteval. Niektorí vývojári sa mylne domnievajú, že text v syntaxi JSON je rovnaká ako javascript, aj keď je to len čiastočne pravda. Z tohto dôvodu sa predpokladá, že jednoduchý spôsob, ako analyzovať dátového formátu javascript-programu - použiť vložené javascripteval, ktorý bol navrhnutý tak, aby posúdenie výrazov "Javascript". Namiesto použitia špecifického parser interpret sám, takže sa používa na vykonávanie dát JSON, vytvárať javascript prírode blízke objekty. Avšak, táto metóda je riskantné, ak je pravdepodobné, že tieto JSON môže obsahovať ľubovoľný kód "JavaScript", ktorý potom bude vyrobený rovnako. Ak spočiatku žiadne kroky vedúce k overenie dát, metóda eval prikláňa k bezpečnostné chyby, kedy údaje javascript a všetky stredy nie sú riadené jediným dôveryhodného zdroja. Ak napríklad údaje nie sú overené, sú napadnuté škodlivým kódom javascript. Takéto porušenia môžu tiež predstavovať riziko krádeže údajov, falošnej autentifikácie a iných potenciálnych zneužívaní údajov a zdrojov. Preto bola nová funkcia JSON.parse vyvinutá ako bezpečnejšia alternatíva k evalu. Je špeciálne určený na spracovanie údajov, a to JSON, nie javascript. Spočiatku malo byť zahrnuté do štvrtého vydania štandardu ECMAScript, ale nestalo sa to. Prvá verzia bola pridaná do piatej verzie a teraz je podporovaná hlavnými prehliadačmi.

    Súvisiace publikácie