POZOR! Článek jsem napsal před více jak rokem, a tudíž už nemusí reflektovat můj nynější názor nebo může být zastaralý.
Pokud vidíte zkratku JSON (JavaScript Object Notation – JavaScriptový objektový zápis), vězte, že dle Wikipedie se jedná o:
„… 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 objektech.“
Jedním z primárních účelů JSONu na webové stránce je přenos dat ze serveru (PHP) ke klientovi (JavaScript). Hlavně tedy při komunikaci přes AJAX.
Použitím JSONu si ušetříte spoustu práce s vytvářením nějakého parseru, navíc je práce s ním velmi elegantní.
JSON v PHP
Zde je to celkem jednoduché. Od verze 5.2 jsou funkce pro práci s JSON přímo integrované a není potřeba žádné rozšíření.
$names[0] = Array(
'jmeno' => 'Michal',
'prijmeni' => 'Novák'
);
$names[1] = Array(
'jmeno' => 'Pavel',
'prijmeni' => 'Dvořák'
);
$names[3] = Array(
'jmeno' => 'Martin',
'prijmeni' => 'Černý',
'adresa' => Array (
'ulice'=>'Pražská 25',
'mesto'=>'Praha'
),
);
// Vytvoření JSON stringu - [{"jmeno":"Michal","prijmeni":"Novák"},{"jmeno":"Pavel","prijmeni":"Dvořák"},{"jmeno":"Martin","prijmeni":"Černý","adresa":{"ulice":"Pražská 25","mesto":"Praha"}}]
$json_string = json_encode ($names);
// Získání dat z JSON stringu
$data = json_decode ($json_string);
// Vypíše se "Pražská 25"
echo $data[2]->adresa->ulice;
JSON v JavaScriptu
Zde už to tak jednoduché nebude. Tedy vlastně ano bude, ale pouze v moderních prohlížečích, pro ty starší IE7, Firefox 3 a další prehistorické prohlížeče musíte vytvořit (nebo použít) vlastni funkci, která z JavaScriptového objektu vytvoří string.
Pro dekódování lze použít místo
var data = JSON.parse(jsonString)
funkci eval (vždyť syntaxe JSONu vychází z JavaScriptu):
var data = eval("(" + jsonString + ")");
Zde uvedu pouze ukázku pro moderní prohlížeče:
var names = new Array();
names[0] = {};
names[0].jmeno = 'Michal';
names[0].prijmeni = 'Novák';
names[1] = {};
names[1]['jmeno'] = 'Pavel';
names[1]['prijmeni'] = 'Dvořák';
names[2] = {};
names[2].jmeno = 'Martin';
names[2].prijmeni = 'Černý';
names[2].adresa = {};
names[2].adresa.ulice = 'Pražská 25';
names[2].adresa.mesto = 'Praha';
// Vytvoření JSON stringu - [{"jmeno":"Michal","prijmeni":"Novák"},{"jmeno":"Pavel","prijmeni":"Dvořák"},{"jmeno":"Martin","prijmeni":"Černý","adresa":{"ulice":"Pražská 25","mesto":"Praha"}}]
var json_string = JSON.stringify(names);
// Získání dat z JSON stringu
var data = JSON.parse(json_string);
// Vypíše se "Pražská 25"
alert( data[2].adresa.ulice );
Znáte někoho, komu by článek mohl pomoct? Zasdílejte mu ho :)