JSON (JavaScript Object Notation) – формат обмена данными, основанный на языке JavaScript, который представляет собой набор пар {ключ: значение}. Значение при этом может быть массивом, числом, строкой и булевым значением, что позволяет передавать сложные структурные данные в виде текста, быстро и удобно. Поддерживается большинством языков программирования.

В PHP поддержка формата JSON появилась с версии 5.2.0 и работает только с кодировкой UTF-8.

Преобразование массива в JSON

Самый распространёнными данными передаваемыми в виде JSON в php являются массивы. Для преобразования массива в JSON используется функция json_encode(). Принимает 3 аргумента, сам массив и специальный флаг (битовая маска) влияющий на то, как функция будет обрабатывать данные внутри массива, а так же целое число устанавливающее максимальную глубину, по умолчанию 512 ( за 10 лет практики ни разу не приходилось пользоваться этим аргументом).


//Данные пользователя
$user = [
	'name' => 'Макс',
	'age' => 25,
	'contacts' => [
		'email' => 'example@mail.com',
		'phone' => '+71112225566'
	]
];

$json = json_encode($user, JSON_UNESCAPED_UNICODE);
echo $json;



Результат: 

{"name":"Макс","age":25,"contacts":{"email":"example@mail.com","phone":"+71112225566"}}
В данном примере я использовал флаг JSON_UNESCAPED_UNICODE он нужен для того, чтобы кириллица передавалась в человекочитаемом виде, а не кодировалась.

Декодирование JSON строки

Функция json_encode() преобразует строку в PHP-объект. Допустим в наш скрипт пришла JSON строка с формы записи на приём:


{"name":"Николай","age":35,"contacts":{"email":"example@mail.com","phone":"+75558885566"},"msg":"Добрый день! 
\nЯ бы хотел записаться на приём к стоматологу","time":"14.01.2023 15:09:08","doctor":"Иванова А.М. - врач стоматолог"}

Чтобы преобразовать её в php ассоциативный массив (наиболее удобный формат для работы с такими данными) нужно вызвать json_encode() передав первым аргументом строку, вторым булеву true.


$json = '{"name":"Николай","age":35,"contacts":{"email":"example@mail.com","phone":"+75558885566"},"msg":"Добрый день! Я бы хотел записаться 
на приём к стоматологу","time":"14.01.2023 15:25:01","doctor":"Иванова А.М. - врач стоматолог"}';

$data = json_decode($json, true);

echo '<pre>';
print_r($data);
echo '</pre>';


Результат:

Array
(
    [name] => Николай
    [age] => 35
    [contacts] => Array
        (
            [email] => example@mail.com
            [phone] => +75558885566
        )

    [msg] => Добрый день! Я бы хотел записаться на приём к стоматологу
    [time] => 14.01.2023 15:25:01
    [doctor] => Иванова А.М. - врач стоматолог
)

HTTP запрос в формате JSON

Большинство сервисов предоставляющих API для работы с данными, требуют чтобы запросы к ним осуществлялись в формате JSON. Сделать такой запрос можно при помощи cURL PHP передав в качестве заголовков CURLOPT_HTTPHEADER массив с 'Content-Type: application/json'.


//Подготовка даных
$data = [
	'user' => 'test@yandex.ru'
	'method' => 'getData',
];

//Инициализируем cURL сеанс
$ch = curl_init('https://metrika.yandex.ru');

//Устанавливаем заголовки
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); 	
curl_setopt($ch, CURLOPT_POST, 1);

//Передаём данные методом POST в формате JSON
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

//Передача
$res = curl_exec($ch);

//Закрываем сеанс
curl_close($ch);
Подробнее о работе с cURL PHP читайте тут.
Полезная статья?
(Нет голосов)
Курсы от партнёров
Хотите освоить востребованную профессию? Воспользуйтесь предложениями от наших партнёров. Пройдите учебный курс по одному из популярных IT направлений.

Все курсы партёнров
Вам также могут понравиться
CSS курсоры

CSS курсоры

В статье рассмотрены возможности изменения курсоров пользователя при помощи CSS

Работа с регистром строк в php

Работа с регистром строк в php

В статье рассмотрены примеры работы с регистром строк в языке PHP, проверка регистра, изменение, инверсия

Работа с циклами в PHP

Работа с циклами в PHP

В статье рассмотрены примеры работы с циклами в PHP


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке