JavaScript Object Notation

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

JavaScript 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

YAML

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

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top