JSON, для обмена объектами между разными языками

JSON (JavaScript Object Notification) - формат данных для обмена между браузером и сервером. Его синтаксис похож на синтаксис ассоциативной таблицы в JavaScript. Фактически формат, установленный в 2002 году, был основан на подмножестве ECMA-252 спецификации языка.

Начиная с PHP 5.2 расширение JSON является частью установки PHP по умолчанию. Она предоставляет json_decode и json_encode функции, которые преобразуют строку в объект или строковый объект, что позволяет сохранить объект в файле или передать его в приложение JavaScript.

Все современные браузеры узнают объект JSON, который преобразует объект или отображает его в виде древовидной строки.

JSON даже стал типом данных в PostgreSQL и MySQL (5.5.7). Для этих бесплатных конкурентов Oracle контент JSON может быть таким же типом данных, как INTEGER или TEXT. Для его использования добавляются новые команды. Также можно выразить результат запроса в JSON.

Формат JSON распознает те же типы данных, что и JavaScript :

Как использовать JSON в JavaScript

Читаем JSON-файл на сервере с помощью парсера. Они существуют для наиболее распространенных языков программирования.
На веб-странице просто предоставьте содержимое файла в качестве аргумента функции eval (), чтобы вернуть массив или объект, который может использоваться непосредственно JavaScript .

var x = eval('(' + xhr.responseText + ')'); 

Например, содержимое, назначенное атрибуту responseText объекта XMLHttpRequest при запросе в Ajax, может стать объектом в программе.

Перед назначением объекта в JavaScript с функцией eval рекомендуется очистить содержимое регулярным выражением, чтобы избежать возможного введения вредоносного кода.

var doc = xhr.responseText;
var obj = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.
   test( doc.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + doc + ')');

Этот код приводится в RFC 4627.

Поскольку существуют JSON-парсеры для всех языков, работающих со стороны сервера, таким образом можно обмениваться объектами между JavaScript-приложением и бэкендом, например, если это PHP-скрипт :

JSON, JavaScript et PHP

Теперь мы должны заменить eval на JSON.parse, так как теперь это поддерживают все браузеры.

JSON vs XML и другие альтернативные форматы

Вот пример объекта, содержащего таблицу. Числовые значения записываются как есть, а строки всегда заключены в кавычки.

Файл JSON :

{
   "menu": "Fichier",
   "commandes": 
   [
    {
     "title": "Nouveau",
     "action":"create"
    },  
    { 
     "title": "Ouvrir",
     "action": "open"
    },
    { 
     "title": "Quitter",
     "action": "exit"
    }
   ]
} 

Этот файл представляет собой меню, статья, приведенная ниже, служит демонстрацией ее использования.

Эквивалент XML:

<menu label="Fichier">
<menulist>
<command label="Nouveau" command="create" />
<command label="Ouvrir" command="open"/>
<command label="Quitter" command="exit" />
</menulist>
</menu>

XML-версию читать проще, но для компьютера преимущество в JSON: легче, проще парсить, похож на объект JavaScript .
Более подробное сравнение см. в JSON или XML, какой формат выбрать?

Проверка данных может осуществляться с помощью схемы JSON. Это позволит избежать необходимости менять платформу, как это сделал Uber, на том основании, что полученные данные не всегда имеют ожидаемый формат.

Среди других конкурирующих форматов - YAML, более полный, но и более сложный и Protocol Buffers, созданный Google для своих серверов. Последний лучше вписывается в языки, отличные от JavaScript, потому что из прототипа, описывающего данные (это были бы строки меню в нашем примере) компилятор создает классы на языке C++ или Java для доступа к ним. Но это скорее подходит для статических данных.

Ссылки: Дополнительная информация о Json.org. Сайт предоставляет ссылку на парсер для каждого языка программирования. См. также спецификацию ECMA.