Метод json
Метод json применяется к объекту ответа (экземпляру класса ClientResponse), который возвращается методами HTTP-клиента Laravel. Он автоматически парсит JSON-строку из тела ответа и преобразует её в массив PHP (по умолчанию) или в объект. Это удобно при работе с API, когда нужно быстро получить структурированные данные.
Синтаксис
<?php
$res = Http::get($url)->json($key = null, $default = null);
?>
Метод принимает два необязательных параметра: $key - ключ для извлечения конкретного элемента из декодированного массива, и $default - значение по умолчанию, возвращаемое, если ключ не найден.
Пример
Давайте отправим GET-запрос к API, которое возвращает список пользователей, и декодируем JSON в массив:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesHttp;
use IlluminateHttpRequest;
class ApiController extends Controller
{
public function index()
{
$res = Http::get('https://api.example.com/users');
$users = $res->json();
echo $users[0]['name'];
}
}
?>
Результат выполнения кода:
"John Doe"
Пример
Если API возвращает сложную структуру, вы можете получить конкретное значение, передав ключ в метод json:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesHttp;
class ApiController extends Controller
{
public function show()
{
$res = Http::get('https://api.example.com/user/1');
$email = $res->json('email');
echo $email;
}
}
?>
Результат выполнения кода:
"john@example.com"
Пример
Если ключ отсутствует, метод вернёт значение по умолчанию. Это позволяет избежать ошибок при работе с неполными данными:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesHttp;
class ApiController extends Controller
{
public function details()
{
$res = Http::get('https://api.example.com/user/2');
$phone = $res->json('phone', 'not provided');
echo $phone;
}
}
?>
Результат выполнения кода:
"not provided"