Общее представление о JSON
JSON (JavaScript Object Notation) означает запись объектов JavaScript. В литературе по JavaScript массивы определяются следующим образом:
Однако существует и более компактный способ их записи с помощью квадратных скобок:
Это же относится и к объектам, которые в JavaScript представляют собой в какой-то степени массивы более высокого уровня. Но в данном случае для компактной записи объектов используются фигурные скобки. В следующем фрагменте кода определяется объект с тремя свойствами:
"title": "JavaScript Phrasebook",
"publisher": "Sams Publishing",
"pubdate": 2006
};
Оба вида сокращенной записи можно объединить вместе, чтобы представить сложные данные в виде строки. В этом, собственно, и заключается весь смысл JSON. Благодаря возможности компактно записывать данные в строке этот формат отлично подходит для преобразования данных в строку и обратно. Создать строковое представление данных в формате JSON на стороне сервера не представляет труда. А еще проще преобразовать строку из формата JSON в объект JavaScript на стороне клиента:
var book = eval( "(" + json + ")" );
JSON постепенно становится стандартом форматом обмена данными для приложений AJAX. В версии PHP 6, скорее всего, появится поддержка JSON на базовом уровне.
Файл json.html
var XMLHttp = getXMLHttp();
XMLHttp.open("GET", "json.php", true);
XMLHttp.onreadystatechange = handlerFunction;
XMLHttp.send(null);
function handlerFunction() {
if (XMLHttp.readyState == 4) {
var json = XMLHttp.responseText;
var book = eval("(" + json + ")");
var pubdate = book.pubdate;
var title = book.title;
var publisher = book.publisher;
window.alert(title + " by " + publisher + " (" + pubdate + ")");
}
}
function getXMLHttp() {
if (window.XMLHttpRequest) {
try {
XMLHttp = new XMLHttpRequest();
} catch (e) { }
} else if (window.ActiveXObject) {
try {
XMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) { }
}
}
return XMLHttp;
}
</script>
Файл json.php
$json = '{
"title": "JavaScript Phrasebook",
"publisher": "Sams Publishing",
"pubdate": 2006
}';
echo $json;
?>
Пользоваться функцией eval() обычно не рекомендуется, поскольку это может серьезно нарушить безопасность системы, если данные в формате JSON поступают из ненадежного источника. В связи с тем что действие объекта XMLHTTPRequest ограничивается тем же доменом, где находится web-сервер, данным в формате JSON можно доверять. Но для большей надежности рекомендуется загрузить библиотеку json.js по адресу http://www.json.org/js и заменить вызов функции eval() следующей строкой кода:
Оставьте свой отзыв