Метод setData класса JsonResponse
Метод setData класса JsonResponse устанавливает
данные, которые будут преобразованы в JSON-строку и отправлены
в теле ответа. Первым параметром передаётся значение любого типа:
массив, объект, строка или число. Вторым необязательным параметром
можно указать формат кодирования (например, json).
Метод возвращает объект $this, что позволяет использовать
цепочку вызовов.
Синтаксис
public function setData(mixed $data, string $format = null): static
Пример
Давайте создадим JSON-ответ и установим данные в виде массива:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ApiController extends AbstractController
{
#[Route('/api/data', name: 'api_data')]
public function data(): JsonResponse
{
$res = new JsonResponse();
$res->setData(['a', 'b', 'c', 'd', 'e']);
return $res;
}
}
?>
Результат выполнения кода:
["a","b","c","d","e"]
Пример
Давайте установим данные в виде ассоциативного массива:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ApiController extends AbstractController
{
#[Route('/api/user', name: 'api_user')]
public function user(): JsonResponse
{
$res = new JsonResponse();
$res->setData([
'name' => 'abcde',
'age' => 25
]);
return $res;
}
}
?>
Результат выполнения кода:
{"name":"abcde","age":25}
Пример
Давайте установим данные после создания ответа через конструктор:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ApiController extends AbstractController
{
#[Route('/api/hello', name: 'api_hello')]
public function hello(): JsonResponse
{
$res = new JsonResponse(['status' => 'ok']);
$res->setData(['message' => 'hello']);
return $res;
}
}
?>
Результат выполнения кода:
{"message":"hello"}
Смотрите также
-
класс
JsonResponse,
который создаёт JSON-ответ -
метод
setEncodingOptions,
который задаёт опции кодирования JSON -
метод
fromJsonString,
который создаёт ответ из JSON-строки -
класс
Response,
который представляет базовый HTTP-ответ