JavaScript Object Notation
![Avatar](assets/img/avatar/39.jpg)
Author
Albert FloresJavaScript Object Notation (také známý pod zkratkou JSON) je formát pro výměnu dat, který je využíván ve webových aplikacích. JSON umožňuje zapisovat data ve formě objektů, pole a hodnot a je založen na syntaktice jazyka JavaScript. Tento formát je jednoduchý na čtení a psaní pro lidi a také na zpracování a generování dat pro strojové zpracování. JSON je nezávislý na programovacím jazyce a je běžně používán pro přenos dat mezi serverem a klientem v rozhraních API. Na stránce se nachází stručný popis syntaxe JSON, ukázky použití a informace o podporovaných datových typech. Kromě toho jsou zde také uvedeny nástroje a knihovny, které umožňují práci s formátem JSON v různých programovacích jazycích.
JavaScript Object Notation (JavaScriptový objektový zápis, JSON) je způsob zápisu dat (datový formát) nezávislý na počítačové platformě, určený pro přenos dat, která mohou být organizována v polích nebo agregována v objektech. Vstupem je libovolná datová struktura (číslo, řetězec, boolean, objekt nebo z nich složené pole), výstupem je vždy řetězec. Složitost hierarchie vstupní proměnné není teoreticky nijak omezena.
Charakteristika
JSON umí pojmout pole hodnot (neindexované i indexované, tzv. hash), objekty (coby pole dvojic index:hodnota) a jednotlivé hodnoty, kterými mohou být řetězce, čísla (celá i s pohyblivou řádovou čárkou) a speciální hodnoty true, false a null. +more Indexy polí v objektu mají notaci jako řetězce; řetězce jsou uváděny v uvozovkách a escapovány pomocí zpětného lomítka. Mezi prvky a hodnotami mohou být libovolné bílé znaky, které na výsledku nic nemění. JSON jako formát neřeší kódování textu, výchozí kódování je ale UTF-8.
Příklady
Otestování schopností JSON (v PHP):
$a=array(1, -2, 3.333, 4e17, "abc", "á\n", null, array(2.1, 2.2, array("2.2.1")), false, true, "", "key"=>"value", 'abc"def'=>array); echo json_encode($a, JSON_PRETTY_PRINT);
Kód vypíše:
{ "0": 1, "1": -2, "2": 3.333, "3": 4.0e+17, "4": "abc", "5": "\u00e1\n", "6": null, "7": [ 2.1, 2.2, [ "2.2.1" ] ], "8": false, "9": true, "10": "", "key": "value", "abc\"def": [] }
Příklady chybně zformátovaných dat:
{klíč: "hodnota"} | klíče musejí být v uvozovkách |
---|---|
{'klíč':'hodnota'} | řetězce musejí být pouze ve dvojitých uvozovkách |
{"size": . 1} | čísla musejí začínat číslicí |
{"moje \"velké\" džíny":"Levi\'s"} | zatímco dvojité uvozovky se uvnitř řetězce eskapují, jednoduché (apostrofy) nikoliv |
[ 1, 2, 3, ] | poslední čárka není dovolena |
{ "text": "Line 1 Line 2 Line 3" } | vkládání textové hodnoty s konci řádků se musí uvést v jednom řádku a samotné odřádkování escapovat, tj. +more použít \n a/nebo \r |
{"name": "\u96"} | znaky zakódované do Unicode jsou vždy čtyřmístné, zleva doplněné nulami |
{"allow": TRUE} | konstanty true, false a null se uvádějí pouze malými písmeny |
{ Number. POSITIVE_INFINITY, Number. NEGATIVE_INFINITY, NaN, } | speciální hodnoty pro nekonečno a NaN nejsou povoleny |
Výhody a nevýhody
Navzdory názvu je JSON zcela obecný a může sloužit pro přenos dat v libovolném programovacím nebo skriptovacím jazyku, přitom jsou data poměrně čitelná i pro člověka. Data, zapsaná metodou JSON, mohou být samozřejmě uložena a přenášena v souborech; častěji ale přenos probíhá v prostředí intra- nebo internetu (např. +more s použitím technologie AJAX).
Mezi nedostatky JSON patří to, že neumožňuje definovat znakovou sadu přenášeného obsahu, optimalizace pro přenos binárních dat. Tyto nedostatky platí ale pro některé (slabší) implementace. +more Nealfabetické znaky v řetězcích a binární data JSON jsou escapovány zpětným lomítkem, za kterým následuje buď jeden z běžně používaných znaků (např. \n pro nový řádek, \t pro tabulátor, \\ pro samotné zpětné lomítko) nebo \u indikující znak z Unicode (UTF-16), za nímž následují čtyři hexadecimální číslice.
Dá se říci, že JSON sází na jednoduchost způsobu uložení dat, srozumitelnost (data jsou čitelná člověkem), platformovou nezávislost a jednotnost (JSON se rychle etabloval) a to vše na úkor velikosti přenášených dat.
Alternativy
Vizuálně velmi podobný JSONu je SDL, který své složené datové typy a pole taktéž vkládá (i vícenásobně) do složených závorek. Jiný přístup má YAML, který na rozdíl od JSONu aktivně používá odsazování a může obsahovat i komentáře.
Další alternativou JSONu je XML, které lépe pojme i kontext toho, co přenáší - na rozdíl od JSON ale obsahuje průměrně 40 % samotné značky a jejich atributy. JSON je tedy považováno za „odlehčenou“ a jednodušší alternativu k XML. +more Navíc většinou existují importní/exportní metody, jak mezi XML a JSON data převádět. Oblast, ve které je JSON neoptimální, jsou binární data.
Některé programovací a skriptovací jazyky mají tzv. serializaci, implementovanou jako základní funkci. +more Její princip je s JSON velmi podobný, ale jsou specifické pro daný jazyk. Nemají-li nativně JSON ani serializaci, je poslední alternativou napsání vlastního řešení. Výhodou toho je absolutní kontrola nad tím, jaká data se přenesou a jak (textová či binární podoba, datová komprese), nevýhoda je v tom, že tento způsob není obecně známý a ti, kteří s ním budou pracovat, si jej budou muset nastudovat.
Odkazy
Související články
Externí odkazy
http://www. json. +moreorg/ * [url=http://json. org/json-cz. html]Syntax JSON[/url] * [url=http://www. thomasfrank. se/xml_to_json. html]Převodník XML→JSON v JavaScriptu[/url] * [url=http://zdrojak. root. cz/n/json/]Návody pro práci s JSON[/url] * [url=http://zdrojak. root. cz/clanky/json-na-nekolik-zpusobu/]JSON na několik způsobů[/url].
Kategorie:Značkovací jazyky Kategorie:JavaScript Kategorie:Datové struktury Kategorie:Formáty serializace dat