Метод fromJsonString класса JsonResponse
Метод fromJsonString класса JsonResponse создаёт
JSON-ответ из уже готовой JSON-строки. Первым параметром
передаётся строка с JSON, вторым - HTTP-статус ответа,
третьим - массив заголовков. В отличие от конструктора,
метод не кодирует данные повторно, а использует строку как есть.
Синтаксис
public static function fromJsonString(
string $json,
int $status = 200,
array $headers = []
): static
Пример
Давайте создадим JSON-ответ из готовой строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): JsonResponse
{
$json = '{"name": "abcde", "age": 25}';
return JsonResponse::fromJsonString($json);
}
}
?>
Результат выполнения кода:
{"name": "abcde", "age": 25}
Пример
Давайте создадим JSON-ответ из строки с массивом и укажем статус:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/articles', name: 'article_list')]
public function list(): JsonResponse
{
$json = '["article 1", "article 2", "article 3"]';
return JsonResponse::fromJsonString($json, 201);
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте передадим собственные заголовки вместе с JSON-строкой:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/user', name: 'user_show')]
public function show(): JsonResponse
{
$json = '{"name": "user", "active": true}';
return JsonResponse::fromJsonString($json, 200, [
'X-Custom-Header' => 'hello',
]);
}
}
?>
Результат выполнения кода:
{"name": "user", "active": true}
Смотрите также
-
класс
JsonResponse,
который формирует JSON-ответ -
метод
setData,
который задаёт данные JSON-ответа -
метод
setEncodingOptions,
который задаёт опции кодирования JSON -
класс
Response,
который представляет HTTP-ответ