11

Возвращение JSON из PHP-скрипта

8

Я хочу вернуть JSON из PHP-скрипта.

Достаточно просто использовать echo для вывода результата? Нужно ли устанавливать заголовок <code>Content-Type</code>?

5 ответ(ов)

20

Хотя в большинстве случаев вы можете обойтись без этого, рекомендуется установить заголовок Content-Type:

<?php
$data = /** данные для сериализации **/;
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);

Если вы не используете определенный фреймворк, я обычно позволяю некоторым параметрам запроса изменять поведение вывода. Это может быть полезно, в частности для быстрой отладки, иногда не отправлять заголовок или использовать print_r, чтобы визуально оценить полезную нагрузку данных (хотя в большинстве случаев это не должно быть необходимо).

1

Полный и понятный пример PHP-кода, который возвращает JSON, выглядит следующим образом:

$option = $_GET['option'];

if ( $option == 1 ) {
    $data = [ 'a', 'b', 'c' ];
    // будет закодировано в JSON-массив: ["a","b","c"]
    // в JavaScript можно получить доступ как: result[1] (возвращает "b")
} else {
    $data = [ 'name' => 'God', 'age' => -1 ];
    // будет закодировано в JSON-объект: {"name":"God","age":-1}  
    // в JavaScript можно получить доступ как: result.name или result['name'] (возвращает "God")
}

header('Content-type: application/json');
echo json_encode( $data );

Этот код принимает параметр option через GET-запрос и в зависимости от его значения формирует массив данных: если option равно 1, возвращается массив, иначе — ассоциативный массив (объект). Заголовок Content-type устанавливается на application/json, чтобы указать, что возвращаемые данные имеют формат JSON. Функция json_encode используется для преобразования массива в JSON-строку перед отправкой клиенту.

0

Чтобы установить тип содержимого на application/json, используйте следующую строку кода:

header('Content-type: application/json');

После этого вы можете вывести ваши данные в формате JSON с помощью функции echo. Например:

$data = array('key' => 'value', 'number' => 123);
echo json_encode($data);

Таким образом, вы сначала задаете заголовок, а затем отправляете ваши данные в формате JSON. Не забудьте, что функция json_encode преобразует массив или объект в строку формата JSON.

0

Вы можете создать простую функцию для возврата JSON-ответа с указанным HTTP статусом следующим образом:

function json_response($data = null, $httpStatus = 200)
{
    header_remove(); // Удаляем все заголовки

    header("Content-Type: application/json"); // Устанавливаем тип контента как JSON

    http_response_code($httpStatus); // Устанавливаем статус HTTP

    echo json_encode($data); // Кодируем данные в формат JSON и выводим

    exit(); // Завершаем выполнение скрипта
}

Эта функция принимает два параметра: $data, который может содержать данные, которые вы хотите вернуть в формате JSON, и $httpStatus, который определяет HTTP статус-код. По умолчанию статус-код установлен на 200, что соответствует успешному запросу. Функция также удаляет все предыдущие заголовки, устанавливает заголовок Content-Type и кодирует данные в JSON. В конце выполнения скрипт завершается с помощью exit().

0

Если вы хотите вернуть данные в формате JSON с помощью PHP, вы можете использовать следующий пример кода:

<?php
$data = /** ваши данные для сериализации **/; // Замените эту строку на ваши данные
header("Content-type: application/json; charset=utf-8"); // Устанавливаем заголовок для JSON ответа
echo json_encode($data); // Кодируем данные в формат JSON и выводим их
?>

В данном коде сначала определяются данные, которые вы хотите сериализовать в формат JSON. Затем с помощью header устанавливается заголовок, указывающий, что тип содержимого – JSON. Наконец, с помощью json_encode данные кодируются в формат JSON и выводятся на экран.

Убедитесь, что ваши данные (в $data) могут быть правильно закодированы в JSON, иначе функция json_encode может вернуть false.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь