ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON . Использование

За счёт своей лаконичности по сравнению с XML , формат JSON может быть более подходящим для сериализации сложных структур. Если говорить о веб-приложениях, в таком ключе он уместен в задачах обмена данными как между браузером и сервером ( AJAX ), так и между самими серверами (программные HTTP-интерфейсы).

Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией eval (). Кроме того, возможна вставка вполне работоспособных JavaScript-функций. В языке PHP , начиная с версии 5.2.0, поддержка JSON включена в ядро в виде функций json_decode() и json_encode(), которые сами преобразуют типы данных JSON в соответствующие типы PHP и наоборот.

Синтаксис

JSON -текст представляет собой (в закодированном виде) одну из двух структур:

  • Набор пар ключ:значение . В различных языках это реализовано как объект, запись, структура, словарь, хэш-таблица, список с ключом или ассоциативный массив. Ключом может быть только строка, значением - любая форма.
  • Упорядоченный набор значений. Во многих языках это реализовано как массив, вектор, список или последовательность.
  • Это универсальные структуры данных: как правило, любой современный язык программирования поддерживает их в той или иной форме. Они легли в основу JSON , так как он используется для обмена данными между различными языками программирования.

    В качестве значений в JSON используются структуры:

  • Объект - это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки "{ }". Ключ описывается строкой, между ним и значением стоит символ ":". Пары ключ-значение отделяются друг от друга запятыми.
  • Массив (одномерный) - это упорядоченное множество значений. Массив заключается в квадратные скобки "". Значения разделяются запятыми.
  • Значение может быть строкой в двойных кавычках, числом, объектом, массивом, одним из литералов: true, false или null. Т.о. структуры могут быть вложены друг в друга.
  • Строка - это упорядоченное множество из нуля или более символов юникода, заключенное в двойные кавычки. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты "\".

    Строка очень похожа на одноимённый тип данных в языках С и Java. Число тоже очень похоже на С- или Java-число, за исключением того, что используется только десятичный формат. Пробелы могут быть вставлены между любыми двумя синтаксическими элементами.

  • Следующий пример показывает JSON - представление объекта, описывающего человека. В объекте есть строковые поля имени и фамилии, объект , описывающий адрес , и массив , содержащий список телефонов.

    Основные методы для работы с JSON в JavaScript - это:

    • JSON.parse - читает объекты из строки в формате JSON.
    • JSON.stringify - превращает объекты в строку в формате JSON, используется, когда нужно из JavaScript передать данные по сети.
    1. Знакомство с методом JSON.parse

    Создадим базовое 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;i