Не пропусти свежие посты, подпишись:
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, проверка регистра, изменение, инверсия


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