РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
247 of 1361 menu

Класс JsonResponse

Класс JsonResponse наследуется от Response и автоматически кодирует переданные данные в формат JSON. Первым параметром конструктора передаются данные для сериализации, вторым - HTTP-статус, третьим - массив заголовков, четвёртым - флаг JSON_HEX_TAG. По умолчанию ответ получает заголовок Content-Type: application/json и статус 200.

Синтаксис

new JsonResponse(data, status, headers, json)

Пример

Давайте вернём из контроллера простой массив:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): JsonResponse { $res = ['a', 'b', 'c']; return new JsonResponse($res); } } ?>

Результат выполнения кода:

["a","b","c"]

Пример

Давайте вернём ассоциативный массив с полями сущности:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/show', name: 'article_show')] public function show(): JsonResponse { $res = [ 'string' => 'abcde', 'text' => 'article', 'integer' => 1, 'boolean' => true ]; return new JsonResponse($res); } } ?>

Результат выполнения кода:

{"string":"abcde","text":"article","integer":1,"boolean":true}

Пример

Давайте зададим HTTP-статус вторым параметром:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/error', name: 'article_error')] public function error(): JsonResponse { $res = ['error' => 'user']; return new JsonResponse($res, 404); } } ?>

Результат выполнения кода:

{"error":"user"}

Пример

Давайте создадим ответ из готовой строки JSON с помощью статического метода fromJsonString:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/raw', name: 'article_raw')] public function raw(): JsonResponse { $json = '{"string":"hello","integer":1}'; return JsonResponse::fromJsonString($json); } } ?>

Результат выполнения кода:

{"string":"hello","integer":1}

Смотрите также

  • класс Response,
    который формирует базовый HTTP-ответ
  • метод setData,
    который задаёт данные для JSON-ответа
  • метод setEncodingOptions,
    который задаёт опции кодирования JSON
  • метод fromJsonString,
    который создаёт ответ из строки JSON
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить