Biblioteka Ext często-gęsto wykorzystuje format JSON np. do pobierania danych do grida. Jak podaje Wikipedia “JSON (wymawiane jak imię “Jason” — jā’sən), to skrót od “JavaScript Object Notation”. Jest to lekki format wymiany danych komputerowych. JSON ma tą przewagę nad formatem XML, że może być przetworzony w języku JavaScript w łatwy sposób z wykorzystaniem wbudowanej funkcji eval() tego języka.

Pomimo nazwy JSON jest niezależnym od konkretnego języka tekstowym formatem danych. Wiele języków programowania, w tym Perl, C, Python wspierają ten format danych poprzez dodatkowe pakiety bądź biblioteki. Wśród tych języków programowania są ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, REBOL oraz Ruby”.

Można oczywiście samodzielnie przygotowywać po stronie serwera skrypty, które będą nam generowały dane w potrzebnej strukturze, ale po co wyważać otwarte drzwi? Użytkownicy PHP mają tu w zasadzie dwie możliwości zależnie od wersji PHP, na której pracują.

PHP 5.2 i wyżej

W PHP 5.2 rozszerzenie JSON jest standardowo zaimplementowane więc sprawa jest na dzień dobry załatwiona - wystarczy użyć funkcji json_encode():

$polaczenie = mysql_pconnect("serwer", "login", "haslo") or die("Nie można nawiązać połączenia!");
mysql_select_db("baza") or die("Nie można wybrać bazy!");
$dane = array();
$res= mysql_query("SELECT id, imie, nazwisko, telefon FROM notatnik");
while($obj = mysql_fetch_object($rs)) { $dane[] = $obj; }
echo '{"znajomi":'.json_encode($dane).'}';

PHP poniżej wersji 5.2

Tu jest trochę trudniej, ale też nie ma tragedii, o ile mamy dostęp do repozytorium PEAR. Wykorzystamy to rozszerzenie: http://pear.php.net/pepr/pepr-proposal-show.php?id=198 (polskiej produkcji! autorem jest Michal Migurski). Cała różnica w skrypcie to dopisanie dwóch linijek kodu na początku i zmiana wywołania funkcji (metody) kodującej dane do formatu JSON:

include_once('JSON.php');
$json = new Services_JSON();
$polaczenie = mysql_pconnect("serwer", "login", "haslo") or die("Nie można nawiązać połączenia!");
mysql_select_db("baza") or die("Nie można wybrać bazy!");
$dane = array();
$res= mysql_query("SELECT id, imie, nazwisko, telefon FROM notatnik");
while($obj = mysql_fetch_object($rs)) { $dane[] = $obj; }
echo '{"znajomi":'.$json->encode($dane).'}';

JSON na Windowsach

Tutaj to już bułka z masłem. Pobierz plik http://pecl4win.php.net/ext.php/php_json.dll i wgraj go katalogu z rozszerzeniami PHP. Następnie w pliku php.ini dodaj wpis

extension=php_json.dll

Na koniec zrestartuj serwer.

materiał opracowany na podstawie: http://extjs.com/learn/Tutorial:Creating_JSON_Data_in_PHP