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

JSON je zkratka Java Script Object Notation, což je formát, který používá text pro čtení člověka pro přenos dat, který se skládá z dvojic hodnot atributů. Jedná se o nejběžnější datový formát používaný pro asynchronní komunikaci mezi prohlížečem a serverem, převážně nahrazující XML (AJAX).

JSON je datový formát nezávislý na jazyku, který byl získán z javascriptu. Od roku 2017 používá mnoho programovacích jazyků kód pro generování a analýzu dat pouze v něm. Názvy souborů JSON používají příponu .json.

Historie

Původně byl vyvinut ve formátu JSON Douglas Krokford nula na začátku, a později dva soupeřící standardy (RFC 7159 a ECMA-404) je identifikován v roce 2013. Standard ECMA popisuje pouze platnou syntaxi, zatímco RFC pokrývá některé základy zabezpečení a interoperability. Kromě toho existuje standardní RFC 7493, která definuje omezený profil, známý jako I-JSON (zkratka z "Internet JSON"). Snaží se překonat některé interakce. Každý takový dokument je platným dokumentem JSON. Potřeba vytvářet tento formát vyrostla z potřeby skutečného komunikačního protokolu mezi serverem a prohlížečem, který je implementován v reálném čase bez použití plug-inů (jako jsou například aplikace Flash nebo Java applety).

Vývoj a aplikace

Jak již bylo zmíněno, Douglas Crockford, jako tvůrce společnosti StateSoftware, poprvé identifikoval a popularizoval formát JSON. Následně se spoluzakladatelé dohodli na vytvoření systému, který využívá standardní možnosti prohlížeče,a poskytl vývojářům úroveň abstrakce pro vytváření aplikací s nepřetržitým duplexním připojením k web serveru. V takovém případě bylo možné zachovat spojení dvou HTTP a zacházet s nimi se standardním časem prohlížeče, pokud nebyla provedena výměna dat. Spoluzakladatelé uspořádali diskusi u kulatého stolu a hlasovali pro pojmenování datového formátu JSML nebo JSON, stejně jako pro určení typu licence, na kterou bude nový návrh k dispozici. Formát je aktuálně otevřený.

Praktické využití

Internetová stránka JSON.org byla zahájena v roce 2002. V prosinci 2005 Yahoo! začal nabízet některé z jeho webových služeb v tomto formátu. Google začal používat kanály JSON pro svůj webový protokol GData až v prosinci 2006. Formát souboru JSON byl původně určen pro podmnožinu skriptovacího jazyka javascript (zejména Standard ECMA-262 3. vydání-prosinec) a byl s ním běžně používán. Nezáleží však na tom, jaké jsou údaje o jazykovém formátu. Kód pro analýzu a generování dat JSON je k dispozici v mnoha programovacích jazycích. Na webové stránce JSON jsou uvedeny všechny knihovny. I přesto, že JSON formátu původně inzerované on-line a byl považován za přísná podmnožina JavaScript a ECMAScript, on občas dovolí některé znaky nejsou testovány na linkách, které jsou nepřijatelné v řadách javascript a ECMAScript.

sama JSON se stal mezinárodním standardem ECMA v roce 2013 jako standardní ECMA-404, který ve stejném roce byl použit v RFC 7158 jako referenci. V roce 2014 se RFC 7159 stala hlavním odkazem na používání JSONu na internetu (například MIMEaplikace /json).

datové typy, syntaxe a příklad

Hlavní typy dat JSON je:
  • Číslo: desítkové s nápisem, které mohou zahrnovat desetinnou část a může používat exponenciální notaci E, ale může zahrnovat non-číslo (například, NaN). Formát nerozlišuje mezi cíli a čísly s pohyblivou čárkou. javascript používá pro všechny své číselné hodnoty formát dvojího plovoucího bodu, ale jiné JSON implementované jazyky je mohou kódovat různě.
  • Řádek: Sekvence nulových nebo velkých znaků Unicode. Řádky jsou odděleny dvojitými citovanými znaky a syntaxe podporují zpětným lomítkem.
  • Literály: každá hodnota je pravdivá nebo nepravá.
  • Array: uspořádaný seznam s nulovými nebo více hodnotami, z nichž každý může být libovolného typu. Políčka používají hranaté závorky s čárkami.
  • Objekt: neuspořádaná sada dvojic jmen /hodnoty, kde názvy (nazývané také klávesy) jsou řádky. Vzhledem k tomu, že objekty jsou určeny k reprezentaci asociativních polí, je doporučeno (i když ne nutně), aby každý klíč byl v rámci tohoto systému jedinečný. Objekty jsou rozděleny zkroucenými závorkami a čárkami rozdělíte jednotlivé čárky, zatímco uvnitř každého z nich dvojtečka vymaže klíč nebo název z jeho hodnoty.
  • Null: Vyprázdnit hodnotu pomocí slova null.
  • Omezené prostory jsou povoleny a mohou být zobrazeny kolem nebo mezi syntaktickými prvky (význam a interpunkce, ale nikoliv uvnitř řetězcové hodnoty). Za tímto účelem mají pouze čtyři speciální znakyjsou považovány za mezery: prostor, horizontální závorku, překlad linky a zkosení. Zejména musí značka pořadí bajtů negeneruje odpovídající implementace (i když to může být užíván při parsování JSON). Dotaz JSON neposkytuje syntaxi pro komentáře. První verze (jako je uveden v RFC 4627), vyžaduje, aby platný dokument sestával pouze z objektu nebo pole, které by mohly obsahovat jiné typy v nich. Tento formát JSON, jehož příklad lze nalézt na zastaralých webových stránkách, je momentálně nevyužitý.

    Problémy s přenosem dat

    I když Douglas Krokford zpočátku tvrdil, že JSON je přísná podmnožina JavaScript, jehož specifikace skutečně umožňuje vytvářet dokumenty v čitelném JavaScriptu. Zejména JSON umožňuje řetězec hodnota U + 2028 Unicode LINE SEPARATOR U + 2029 a ODST SEPARATOR vypadala neэkranyrovannыmy citované v řadách a JavaScriptu - ne. To je způsobeno skutečností, že JSON zakazuje pouze "řídící znaky". Pro maximální kompatibilitu je třeba tyto znaky promítat zpětným lomítkem. Tato jemnost je důležitá při vytváření JSONP.

    Formát JSON: co je třeba otevřít?

    JSON dokumenty mohou být kódovány v UTF-8, UTF-16 nebo UTF-32 kódování výchozí - UTF-8. Tyto normy podporují úplnou sadu Unicode „, včetně postav mimo základního vícejazyčného letadla (od U ​​+ 10000 k U + 10FFFF) Ale pokud stíněný, musí být tyto znaky napsané pomocí páry náhrady UTF-16. - detaily, které přeskočili některé Analyzátory formátu JSON. Co se má otevřít a jak to budečíst tento soubor? Čísla v tomto formátu jsou agnostické ohledně jejich prezentace v programovacích jazycích. Neexistuje žádný rozdíl mezi celočíselným a plovoucím bodem: některé implementace mohou považovat 42420 a 4.2 E + 1 za stejné číslo, zatímco jiné nemohou to udělat. Kromě toho neexistují žádné požadavky na problémy, jako je přetečení, nedostatečnost, ztráta přesnosti nebo zaokrouhlování. Navíc formát JSON nemá nic co říci o zpracování podepsaných nul, a to bez ohledu na to, zda je 0.0 nebo jiný než -0.0. Většina implementací, které používají IEEE 754 s plovoucí desetinnou čárkou, včetně JavaScript, zachovat významné nuly, ale ne všechny implementace JSON může udělat.

    Použití JavaScript

    Vzhledem k tomu, formát JSON byl přijat s JavaScript a jeho syntaxe (většinou) je podmnožinou jazyka pro analýzu dat JSON může používat javascripteval. Kvůli problémům s rozdělením řetězců unicode popsanými v předchozí části musí funkce eval provést výměnu. To je nebezpečné, pokud řetězec není správně ověřen. Místo toho musíte použít knihovnu analyzátoru JSON nebo podporu javascript pro čtení a zápis JSON. Správně implementovaný analyzátor přijímá pouze platný formát JSON, který je popsán v systému, což zabraňuje neúmyslnému provedení potenciálně škodlivého kódu. Od roku 2010 mají tyto prohlížeče podporu pro analýzu a vybíjení ve formátu JSON pro prohlížeče Firefox a Internet Explorer.

    Nepodporované vlastní typy dat

    Syntaxe javascript definuje několik vlastních datových typů, které nejsou zahrnuty vJSON Standard: mapa, instalace, datum, chyba, regulární výraz, funkce a další. Tyto typy dat javascript musí být zastoupeny jinými formáty, přičemž oba programy souhlasí s cestou konverze mezi typy. Dnes existují některé standardy defacto, například konverze data na řetězec, ale žádný z nich není všeobecně akceptován. Jiné jazyky mohou mít odlišnou sadu vlastních typů, které musí být opatrně serializovány, aby se vypořádali s tímto typem konverze.

    Schéma JSON

    Schéma se používá k určení struktury dat JSON pro ověřování, dokumentaci a správu interakcí. Poskytuje určitý druh smlouvy pro údaje požadované aplikací a způsob její úpravy. Schéma je založeno na konceptech z XML schématu (XSD), ale je vlastní. Stejně jako u XSD se pro schéma a data používají stejné serializační /deserializační nástroje. Schéma je on-line projekt, který je aktuálně ve verzi 5 (vydaný 13. října 2016). K dispozici je několik validátorů pro různé programovací jazyky, z nichž každá má různé úrovně souladu. Neexistují standardní přípony souborů, ale někteří odborníci navrhují schválení .schema.json.

    Typ MIME

    Oficiální typ MIME pro text JSON je "application /json". Navzdory skutečnosti, že většina moderních implementací přijala oficiální typ MIME, mnoho aplikací nadále poskytuje starší podporu pro jiné typy MIME. Mnoho poskytovatelů služeb, prohlížečů, serverů, webových aplikací, knihoven, rámců a rozhraní API používá, počká nebo rozpozná typ MIME, jehož obsah vypadá"Text /json" nebo "text /javascript". Pozoruhodné příklady zahrnují Google Search API, Yahoo!, Flickr, Facebook API, DojoToolkit 0.4 a tak dále.

    JSON-RPC

    JSON-RPC - je protokol vzdáleného volání procedury (RPC), postavený na JSON, navržený jako náhrada za XML-RPC nebo mýdlo. Jedná se o jednoduchý protokol, který definuje pouze několik typů dat a příkazů. To umožňuje, aby systém posílání zpráv (informace na serveru, který nevyžaduje odpověď) a několik hovorů na server, které mohou být zodpovězeny mimo provoz.

    Ajaj

    Asynchronous JavaScript and JSON (nebo Ajaj) patří do stejné metodiky dynamických webových stránek a Ajax, ale místo toho je XML formát dat JSON je základní. AJAJ je technologie pro vývoj webových aplikací, která webové stránce umožňuje po stažení do prohlížeče požadovat nová data. Obvykle je zobrazuje ze serveru v reakci na akce uživatele na této stránce. Například to, co uživatel zadá do vyhledávacího pole, pak klient odešle kód na server, který ihned splňuje rozevíracího seznamu významných prvků v databázi.

    Bezpečnostní otázky

    Text ve formátu JSON je definován jako objekt serializace dat. Nicméně její návrh, jako nepřehledná podmnožina skriptovacího jazyka javascript, vytváří několik bezpečnostních problémů. Jsou zaměřeny na používání interpret „javascript“ provádět dynamické textu, JSON, jako vložený JavaScript. Tento program předkládá falešné nebo škodlivé skripty. To je vážný problém při práci s daty extrahovanými z Internetu. Tato jednoduchá a oblíbená, ale riziková metoda využívá kompatibilitu funkcíjavascripteval Někteří vývojáři mylně věří, že text JSON je syntakticky podobný javascriptu, i když je to jen částečně pravdivé. Proto se domníváme, že snadný způsob, jak program javascript analyzovat data ve formátu, je použít vestavěnou funkci javascripteval, která byla vyvinutá pro vyhodnocení výrazů "javascript". Namísto použití konkrétního syntaktického analyzátoru se tlumočník sám používá k provádění dat JSON vytvořením přirozených objektů javascriptu. Tato metoda je však riskantní, pokud je pravděpodobné, že data JSON mohou obsahovat libovolný kód Javascript, který pak bude proveden stejným způsobem. Nejsou-li nejprve přijata žádná opatření k ověření dat, metoda eval je náchylná k zranitelnosti zabezpečení, když data a celé prostředí javascript nejsou pod kontrolou jediného důvěryhodného zdroje. Pokud nejsou data ověřena, jsou například napadeni škodlivým kódem javascript. Taková porušení mohou také představovat riziko krádeže dat, falešného ověřování a dalších možných zneužití dat a zdrojů. Tak byla nová funkce JSON.parse vyvinuto jako bezpečnější alternativa k evalu. Je speciálně určen pro zpracování dat, a to JSON, nikoliv javascript. Zpočátku bylo plánováno, že bude zařazeno do čtvrtého vydání standardu ECMAScript, ale nestalo se tak. Nejprve byla přidána do páté verze a nyní je podporována hlavními prohlížeči.

    Související publikace