json_php

В последнее время достаточно часто сталкиваюсь с ответами различных сервисов в формате JSON

В связи с этим решил написать заметку о том, как получать данные в своём php-скрипте от таких сервисов

PHP не парсит никаких данных на входе, если заголовок, переданный в приложение, отличный от application/x-www-form-urlencoded или multipart/form-data

Для получения данных из ответа с заголовком application/json можно использовать следующий код


$inputData = file_get_contents('php://input');
$data = json_decode($inputData, true);// в массиве $data будут все нужные нам данные, которые пришли в формате JSON

Также можно добавить проверку на входе в приложение на тип входных данных


if ($_SERVER["CONTENT_TYPE"] == 'application/json') {
    $inputData = file_get_contents('php://input');
    $data = json_decode($inputData, true);
}

Можно сделать наш скрипт универсальным для любых входных данных. Сделать это достаточно просто

$inputData = file_get_contents('php://input');

if ($_SERVER["CONTENT_TYPE"] == 'application/json') {    
    $data = json_decode($inputData, true);
}
elseif ($_SERVER["CONTENT_TYPE"] == 'application/x-www-form-urlencoded' ||
        $_SERVER["CONTENT_TYPE"] == 'multipart/form-data' ) {
    $data = parse_str($inputData);
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *