- PHP — примеры работы с форматом JSON
- JSON — формат обмена данными
- PHP – функции для работы с JSON
- Примеры работы json_encode и json_decode
- Примеры использования JSON-формата на PHP и JavaScript
- Что такое JSON
- Синтаксис JSON на примерах
- PHP функции для работы с JSON-форматом
- JavaScript функции для работы с JSON-форматом
- Примеры практического применения JSON-формата
- 1. Передача данных между браузером и сервером с использованием Ajax-запросов.
- 2. Запись сложных структур данных в базу данных.
- JavaScript JSON PHP
- Файл PHP
- PHP Файл
- Клиентский JavaScript
- Пример
- Массив PHP
- PHP Файл
- Клиентский JavaScript
- Пример
- База данных PHP
- Пример
- Объяснение примера:
- PHP файл
- Объяснение файла PHP:
- Цикл через результат
- Пример
- Метод PHP = POST
- Пример
- PHP Файл
- JSON в PHP
- Что такое JSON
- Синтаксис JSON на примерах
- Пример
- Пример
- PHP и JSON
- Кодирование данных JSON в PHP
- Синтаксис
- Параметры
- Пример
- Пример
- Пример
- Пример
- Пример
- Декодирование данных JSON в PHP
- Синтаксис
- Параметры
- Пример
- Пример
- Доступ к декодированным значениям JSON в PHP
- Пример
- Пример
- Пример
- Извлечение значений из вложенных данных JSON в PHP
PHP — примеры работы с форматом JSON
Продолжаем рассматривать язык программирования PHP и сегодня мы поговорим о функционале, с помощью которого можно преобразовывать данные в формат JSON, а также обрабатывать данные, полученные в виде JSON строки. Другими словами, мы научимся работать с форматом JSON на PHP.
И так как о таком формате как JSON мы с Вами еще не разговаривали, поэтому для начала предлагаю рассмотреть основы этого формата, а затем перейти к тем средствам, которые используются в PHP для работы с JSON.
JSON — формат обмена данными
JSON (Object Notation JavaScript) – это простой текстовый формат обмена данными, который представляет собой строку в виде пар параметр-значение с определенными разделителями. В формате JSON в качестве типа значения параметра могут выступать:
- Строка (значение в кавычках «Пример»);
- Число;
- Логический тип (true, false);
- null;
- Объект (значение в фигурных скобках <>);
- Массив (значение в квадратных скобках []).
Сейчас давайте я попробую привести пример синтаксиса данного формата.
Как Вы понимаете, в качестве элементов массива могут выступать объекты, другими словами, формат JSON предназначен не только для передачи каких-то значений, но и целых структур.
Полный стандарт данного формата можно посмотреть вот на этой странице, а мы с Вами переходим к работе с JSON на языке программирования PHP.
PHP – функции для работы с JSON
В языке PHP существуют специальные функции для работы с форматом JSON, а именно json_encode и json_decode они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно.
json_encode – функция PHP, которая возвращает преобразованные данные в виде строки JSON. В качестве второго необязательного параметра можно передавать дополнительные опции.
json_decode — функция PHP для преобразования JSON строки в переменную PHP. В результате преобразования по умолчанию в переменной будет лежать объект, если Вы хотите преобразовать в ассоциативный массив, то в качестве второго параметра передайте true.
Примеры работы json_encode и json_decode
Для примера давайте сформируем массив данных, преобразуем его в JSON строку, выведем на экран, затем преобразуем обратно в переменную (объект) PHP и также стандартными средствами выведем содержимое этого объекта на экран, плюс просмотрим информацию о переменной с помощью var_dump.
Для начинающих я думаю достаточно, если Вас интересует более подробная информация о работе PHP с JSON, то можете посмотреть на официальном сайте вот здесь. Надеюсь, данный материал был Вам полезен, удачи!
Примеры использования JSON-формата на PHP и JavaScript
Что такое JSON
JSON — это текстовый формат записи данных. Он позволяет в текстовом виде представить как отдельное число или строку, так и сложные структуры, например, массивы с данными. Использование этого формата записи удобно тем, что он читабелен и интуитивно понятен, в то же время позволяет сохранять очень сложные структуры данных. Кроме того, он более компактный, чем xml, поэтому на мой взгляд более предпочтителен для обмена данными между веб-браузером и сервером.
Синтаксис JSON на примерах
Формат json обычно записывается в 2-х вариантах:
1. Последовательность значений. Например, последовательность 10, 15 и «test» в формате JSON будут выглядеть так:
2. Запись в виде пар ключ : значение . Например:
Немного более сложный пример:
PHP функции для работы с JSON-форматом
В языке php начиная с версии 5.2. есть всего 4 функции:
- json_decode — Декодирует строку JSON (из строки json-формата получает данные)
- json_encode — Возвращает JSON-представление данных (преобразует данные в json-строку)
- json_last_error_msg — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
- json_last_error — Возвращает последнюю ошибку
В основном по-большей части, используются всего две функции: json_encode и json_decode. Не буду вдаваться в подробности их синтаксиса, подробнее можете посмотреть на php.net. Пример использования:
Обратите внимание : при кодировании в JSON-формат данных на русском языке, функция json_encode преобразует русские символы в юникод, т.е. заменяет их на \uXXXX и таким образом, json-строка становится не читабельной для человека (но понятной для браузера). Если нужно, чтобы преобразования в юникод не происходило (например, при отладке кода), можно просто использовать опцию JSON_UNESCAPED_UNICODE.
Так же, чтобы при кодировании не добавлялись слэши для экранирования и чтобы строки с числами кодировались как числа, можно использовать JSON_UNESCAPED_SLASHES и JSON_NUMERIC_CHECK. В итоге, чтобы json-строка была читабельной для человека, сделаем, например, так:
Без использования этих опций строка была бы такой:
а с использованием опций, получим читабельную строку:
Еще один момент: если нужно чтобы при декодировании json-строки функция json_decode возвращала именно массив, просто добавьте второй параметр в функцию равный true.
На этом рассмотрение php-функций завершу.
JavaScript функции для работы с JSON-форматом
Начнем с того, что JSON-формат, изначально был придуман для языка JavaScript и потом стал просто отдельным текстовым форматом, используемым в разных языках. Видимо, поэтому синтаксис JSON очень похож на синтаксис записи обычных объектов и массивов.
Функции JavaScript, используемые для преобразования в JSON-формат и обратно:
- JSON.parse — декодирование JSON-строки (преобразование строки в объекты и/или массивы)
- JSON.stringify — возвращает JSON-представление данных (преобразование объектов и/или массивов в json-строку)
Простой пример декодирования json-строки в массив с цифрами:
Пример преобразования (сериализации) объекта в JSON-строку:
При сериализации (преобразовании) объекта в JSON-строку, вызывается метод toJSON этого объекта, если он существует. Если метода нет, тогда перечисляются все свойства объекта. Пример преобразования объекта с методом toJSON:
Обе функции JSON.parse и JSON.stringify имеют доп.параметры для уточнения правил преобразований. Не буду останавливаться на них в рамках этой статьи. Если необходимо, о них можно почитать, например, здесь: https://learn.javascript.ru/json.
Примеры практического применения JSON-формата
Собственно, лично я, применяю формат JSON в 2-х основных ситуациях:
1. Передача данных между браузером и сервером с использованием Ajax-запросов.
Например, у нас есть какая-то страница, на которой нужно обновить данные без перезагрузки страницы. Допустим, нужно чтобы с сервера «подгрузилась» информация со списком сотрудников и их данными.
В JavaScript с помощью jQuery делаем простой ajax-запрос к серверу и выводим данные в виде таблицы в браузер:
На сервере скрипт get-info.php к которому делается ajax-запрос, может быть, например, таким:
В этом примере JSON-строка, которая была передана с сервера в браузер была такой:
Я специально не стал показывать строку в виде «дерева», т.к. она передается именно в таком виде. И как вы можете оценить, запись данных в формате JSON получилась очень компактной, а это значит, что передача этих данных от сервера к браузеру будет практически мгновенной.
2. Запись сложных структур данных в базу данных.
Иногда бывают ситуации, когда заводить еще одну таблицу в базе данных не целесообразно, чтобы сохранить различные данные. Допустим, предположим, у зарегистрированного на сайте пользователя есть возможность сделать настройку цвета фона и цвета текста.
Вместо того, чтобы заводить еще одну таблицу ради 2-х настроек, можно просто в таблице со списком пользователей сделать текстовый столбец, в который помещать данные настроек пользователя. Тогда запрос обновления настроек, может например, быть таким:
В будущем, получив из таблицы users информацию, скрипт php может легко превратить их обратно в массив с настройками. Например, если переменная $user_info содержит данные, полученные по пользователю из таблицы users, получить массив с настройками очень просто:
В формате JSON, можно так же, например, записать в базу данных какие опции товаров выбрал покупатель.
Впринципе, можно даже и всё содержимое корзины записать в формате JSON, например, так:
В обычном не древовидном виде эта JSON-строка будет такой:
Таким образом, как видно из примеров, в формате JSON можно хранить и передавать практически любую информацию.
JavaScript JSON PHP
Обычно JSON используется для чтения данных с веб сервера и отображения данных на веб странице.
В этой главе вы узнаете, как обмениваться данными JSON между клиентом и сервером PHP.
Файл PHP
PHP имеет несколько встроенных функций для обработки JSON.
Объекты в PHP можно преобразовать в JSON с помощью функции PHP json_encode() :
PHP Файл
name = «John»;
$myObj->age = 30;
$myObj->city = «New York»;
Клиентский JavaScript
Вот код JavaScript на клиенте, использующий вызов AJAX для запроса файла PHP из приведенного выше примера:
Пример
Используйте JSON.parse() для преобразования результата в объект JavaScript:
Массив PHP
Массивы в PHP также будут преобразованы в JSON при использовании функции PHP json_encode() :
PHP Файл
Клиентский JavaScript
Вот код JavaScript на клиенте, использующий вызов AJAX для запроса файла PHP из приведенного выше примера массива:
Пример
Используйте JSON.parse(), чтобы преобразовать результат в массив JavaScript:
База данных PHP
PHP — это серверный язык программирования, который может использоваться для доступа к базе данных.
Представьте, что у вас есть база данных на вашем сервере, и вы хотите послать ей запрос от клиента, где вы запрашиваете первые 10 строк в таблице под названием «клиенты».
На клиенте создайте объект JSON, который описывает количество строк, которые вы хотите вернуть.
Прежде чем отправлять запрос на сервер, преобразуйте объект JSON в строку и отправьте его в качестве параметра на URL адрес страницы PHP:
Пример
Используйте JSON.stringify() для преобразования объекта JavaScript в JSON:
Объяснение примера:
- Определите объект, содержащий свойство и значение «limit».
- Преобразуйте объект в строку JSON.
- Отправьте запрос к файлу PHP со строкой JSON в качестве параметра.
- Подождите, пока запрос вернется с результатом (как JSON)
- Отобразите результат, полученный из файла PHP.
Взгляните на файл PHP:
PHP файл
prepare(«SELECT name FROM customers LIMIT ?»);
$stmt->bind_param(«s», $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
Объяснение файла PHP:
- Преобразуйте запрос в объект, используя функцию PHP json_decode() .
- Получите доступ к базе данных и заполните массив запрошенными данными.
- Добавьте массив к объекту и верните объект как JSON с помощью функции json_encode() .
Цикл через результат
Преобразуйте результат, полученный из файла PHP, в объект JavaScript или, в данном случае, массив JavaScript:
Пример
Используйте JSON.parse() для преобразования JSON в объект JavaScript:
Метод PHP = POST
При отправке данных на сервер часто лучше использовать POST метод HTTP.
Чтобы отправлять запросы AJAX с использованием метода POST , укажите метод и правильный заголовок.
Данные, отправленные на сервер, теперь должны быть аргументом метода send() :
Пример
Единственная разница в файле PHP — это способ получения переданных данных.
PHP Файл
Используйте $ _POST вместо $ _GET:
prepare(«SELECT name FROM customers LIMIT ?»);
$stmt->bind_param(«s», $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
JSON в PHP
В этом уроке вы узнаете, как кодировать и декодировать данные JSON в PHP.
Что такое JSON
JSON расшифровывается как аббревиатура от J ava S cript O bject N otation. JSON — это стандартный текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар <ключ: значение>.
В JSON, ключи всегда строки, в то время как значение может быть string , number , true или false , null , object или array . Строки должны быть заключены в двойные кавычки » и могут содержать управляющие символы, такие как \n , \t и \ . JSON более компактный, чем xml, поэтому он более предпочтителен для обмена данными между веб-браузером и сервером.
Синтаксис JSON на примерах
Объект JSON может выглядеть так:
Пример
В то время как пример массива JSON будет выглядеть примерно так:
Пример
PHP и JSON
Структуры данных JSON очень похожи на массивы PHP. В языке PHP существуют специальные функции для кодирования и декодирования данных JSON. Это функции json_encode() и json_decode() соответственно. Они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно. Обе функции работают только со строковыми данными в кодировке UTF-8.
Кодирование данных JSON в PHP
В PHP функция json_encode() используется для кодирования значения в формат JSON. Кодируемое значение может быть любым типом данных PHP, кроме ресурса, такого как база данных или дескриптор файла.
Синтаксис
Параметры
В приведенном ниже примере показано, как кодировать ассоциативный массив PHP в объект JSON:
Пример
Результат приведенного выше примера будет выглядеть так:
В следующем примере посмотрим, как будут кодироваться кириллические символы:
Пример
Результат приведенного выше примера будет выглядеть так:
Как видно кириллица кодируется, исправляется это добавлением опции: JSON_UNESCAPED_UNICODE .
Пример
Результат выполнения кода:
Точно так же вы можете закодировать индексированный массив PHP в массив JSON, например:
В следующем примере посмотрим, как будут кодироваться кириллические символы:
Пример
Результат выполнения кода:
Если применить параметр JSON_FORCE_OBJECT , то функция json_encode() будет возвращать индексированный массив PHP как объект JSON:
Пример
Результат выполнения кода:
Примечание: Неассоциативный массив может быть закодирован как массив или объект. Однако ассоциативный массив всегда кодируется как объект.
Декодирование данных JSON в PHP
Функция PHP json_decode() используется для декодирования JSON в PHP. Эта функция возвращает значение, декодированное из json в соответствующий тип данных PHP.
Синтаксис
Параметры
В следующем примере показано, как декодировать или преобразовать объект JSON в объект PHP:
Пример
Результат выполнения кода:
Функция json_decode() по умолчанию возвращает объект. Если нужно JSON декодировать в ассоциативный массив, то укажите значение второго параметра $assoc в качестве true . По умолчанию его значение — false :
Пример
Результат выполнения кода:
Доступ к декодированным значениям JSON в PHP
Теперь рассмотрим пример, который показывает, как декодировать данные JSON и получить доступ к отдельным элементам объекта JSON в PHP:
Пример
В этом примере показано, как получить доступ к отдельным элементам ассоциативного массива PHP:
Пример
Вы также можете перебирать декодированные данные с помощью цикла foreach(), например:
Пример
Извлечение значений из вложенных данных JSON в PHP
Объекты и массивы JSON также могут быть вложенными. Объект JSON может содержать другие объекты JSON, массивы, вложенные массивы, массивы объектов JSON и т.д. В следующем примере показано, как декодировать вложенный объект JSON и распечатать все его значения в PHP: