@Nubbin

Как получить на выходе отформатированный JSON документ?

Вот примеры кода который я использую

//Пример
$content = ['test' => ['one' => 1], ['two' => ['test'] => 1]];

return Response::json($content, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);


на выходе получаю результат в одну строку

{test": {"one": 1}, {"two": {"test": 1}}

как сделать чтобы в браузере я получил отформатированный вариант:

{
test": {
      "one": 1
},
{   
"two": {
      "test": 1
    }
}
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
Steein
@Steein
Программист
Попробуйте так:

$response = json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
 return response($response)->header('Content-Type', 'application/json');
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@zvonok1337
json_encode($data, JSON_PRETTY_PRINT);
нашел в этих ваших интернетах.
используй флаг соответсвенно json_pretty_print
Ответ написан
@imhuman
Может удобнее не менять код, а использовать плагин для браузера, например, JSON viewer для chrome? Решит вопрос раз и на всегда для всех сайтов.
Ответ написан
SerafimArts
@SerafimArts
Junior HTML Developer
А теперь, после того как ответ получен (выше куча вариантов), предлагаю сделать чуть более адекватный вариант:

1) В контроллере оставить чистый вывод
public function action(): array
{
    return ['test' => ['one' => 1], ['two' => ['test'] => 1]];
}


2) Создать миддлварю:
public function handle(Request $request, \Closuse $next)
{
    $response = $next($request);

    if (\config('app.debug') && $response instanceof JsonResponse) {
        $response->setEncodingOptions($response->getEncodingOptions() | \JSON_PRETTY_PRINT);
    }

    return $response;
}
Ответ написан
@Welaurs
return Response::json($content, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 сент. 2021, в 10:58
10000 руб./за проект
27 сент. 2021, в 10:41
25000 руб./за проект