За счёт своей лаконичности по сравнению с XML , формат JSON может быть более подходящим для сериализации сложных структур. Если говорить о веб-приложениях, в таком ключе он уместен в задачах обмена данными как между браузером и сервером ( AJAX ), так и между самими серверами (программные HTTP-интерфейсы).
Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией eval (). Кроме того, возможна вставка вполне работоспособных JavaScript-функций. В языке PHP , начиная с версии 5.2.0, поддержка JSON включена в ядро в виде функций json_decode() и json_encode(), которые сами преобразуют типы данных JSON в соответствующие типы PHP и наоборот.
СинтаксисJSON -текст представляет собой (в закодированном виде) одну из двух структур:
Это универсальные структуры данных: как правило, любой современный язык программирования поддерживает их в той или иной форме. Они легли в основу JSON , так как он используется для обмена данными между различными языками программирования.
В качестве значений в JSON используются структуры:
Строка очень похожа на одноимённый тип данных в языках С и Java. Число тоже очень похоже на С- или Java-число, за исключением того, что используется только десятичный формат. Пробелы могут быть вставлены между любыми двумя синтаксическими элементами.
Следующий пример показывает JSON - представление объекта, описывающего человека. В объекте есть строковые поля имени и фамилии, объект , описывающий адрес , и массив , содержащий список телефонов.
Основные методы для работы с JSON в JavaScript - это:
- JSON.parse - читает объекты из строки в формате JSON.
- JSON.stringify - превращает объекты в строку в формате JSON, используется, когда нужно из JavaScript передать данные по сети.
Создадим базовое web-приложение Tizen и назовем его json1 .
Введем в файле index.html следующий код:
Рис.
27.2.
Немного изменим код нашего сценария:
var numbers = ""; numbers = JSON.parse(numbers); document.write(numbers);
Рис. 27.3.
Рассмотрим более интересный случай:
var user = "{ "name": "Вася", "age": 35, "isAdmin": true, "friends": ["Миша","Маша","Гриша","Гульшат"] }";
user = JSON.parse(user);
strMessage = "Имя: " + user.name + "
" + "Возраст: " + user.age + "
" + "Администратор: " + user.isAdmin + "
" + "Друзья: " + user.friends + "
";
document.write(strMessage);
Рис. 27.4. 2. Создание объекта из строки JSON
Этот пример был позаимствован с сайтаhttp://www.w3schools.com/js/js_validation.asp . Создадим проект json2 . В файле index.tml введем следующий код.
Create Object from JSON String var text = "{"employees":[" + "{"firstName":"John","lastName":"Doe" }," + "{"firstName":"Anna","lastName":"Smith" }," + "{"firstName":"Peter","lastName":"Jones" }]}"; obj = JSON.parse(text); var n=obj.employees.length; strMessage=""; for(i=0;i1,"name"=>"ivan","country"=>"Russia","office"=>array("yandex"," management")); echo json_encode($json_data); Обратное преобразование данных из формата JSON $json_string="{"id":1,"name":"ivan","country":"Russia","office":["yandex"," management"]} "; $obj=json_decode($json_string);
Теперь в $obj будут содержаться JSON данные переведенные в PHP-объект, доступ к которым вы сможете получить следующим образом:
Echo $obj->name; //Отобразит имя ivan echo $obj->office; //Отобразит компанию yandex
Как видите, $obj->office является массивом.
Foreach($obj->office as $val) echo $val;
Работа с JSON позволяет обмениваться с сервером данными в «чистом виде» . Полностью отпадает необходимость пересылать громоздкие куски HTML кода.