JavaScript Object Notation: Porovnání verzí

Smazaný obsah Přidaný obsah
m rozčlenění a menší rozšíření
m fix
Řádek 2:
 
==Charakteristika==
JSON umí pojmout pole hodnot (neindexované i indexované, tzv. hash), objekty (coby pole dvojic ''názevindex:hodnota'') a jednotlivé hodnoty, kterými mohou být řetězce, čísla (celá i s plovoucí desetinnou tečkou) a speciální hodnoty <tt>true</tt>, <tt>false</tt> a <tt>[[null]]</tt>. Indexy polí v objektu mají notaci jako řetězce; řetězce jsou uváděny v uvozovkách a [[escapování|escapovány]] pomocí zpětného lomítka. Hodnoty v JSON se díky escapování ukládají do vždy dolní poloviny [[ASCII]] tabulky, nehrozí tak neúmyslné přeformátování při použití nesprávné znakové sady.
 
==Příklad==
Otestování schopností JSON (v PHP):
<source lang="PHP">
$a=array(1, -2, 3.333, 4e17, "abc\n", "á\n", null, array(2.1, 2.2, array("2.2.1")), false, true, "", "key"=>"value", 'abc"def'=>array());
echo json_encode($a);
</source>
Řádek 13:
Kód vypíše:
 
'''<tt>{"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":[]}}}</tt>'''
 
==Výhody a nevýhody==
Navzdory názvu, JSON je zcela obecný a může sloužit pro přenos dat (navíc, čitelný pro člověka) v libovolném programovacím nebo skriptovacím jazyku. 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ř. s použitím technologie [[AJAX]]).
 
Mezi nedostatky JSON patří to, že neumožňuje definovat [[znaková sada|znakovou sadu]] přenášeného obsahu, chybí též definice znaku/znaků konce řádků, optimalizace pro přenos binárních dat. Tyto nedostatky platí ale pro některé (slabší) implementace. 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 [[šestnáctková soustava|hexadecimální číslice]].
 
==Alternativy==
Alternativou JSON 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. 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, kde každý nestandardní znak v notaci JSONu zabere 6 bajtů.
 
Některé programovací a skriptovací jazyky mají tzv. serializaci, implementovanou jako základní funkci. Její princip je s JSON velmi podobný, ale jsou specifické pro daný jazyk. Nemají-li nativně JSON ani serializaci, je poslední alternativou si