2015-05-29 1 views
105

Ранее в жрать 5.3:жрать 6: метод не более JSON() для ответов

$response = $client->get('http://httpbin.org/get'); 
$array = $response->json(); // Yoohoo 
var_dump($array[0]['origin']); 

Я мог бы легко получить PHP массив из ответа JSON. Теперь в «Гузл 6» я не знаю, как это сделать. Кажется, что нет метода json(). Я (быстро) прочитал документ из последней версии и ничего не нашел о ответах JSON. Я думаю, что что-то пропустил, может быть, есть новая концепция, которую я не понимаю (или, может быть, я не читал правильно).

Это (ниже) новый способ единственный способ?

$response = $client->get('http://httpbin.org/get'); 
$array = json_decode($response->getBody()->getContents(), true); // :'(
var_dump($array[0]['origin']); 

Или есть помощник или что-то в этом роде?

ответ

180

Я использую json_decode($response->getBody()) сейчас вместо $response->json().

Я подозреваю, что это может быть причиной соответствия PSR-7.

+4

Ничего в документации, которая делает это явным, но кажется, что они поэтапно отказались от помощника '$ response-> json()'. – paperclip

+10

Подтверждено. Из-за PSR-7: https://github.com/guzzle/guzzle/issues/1106 – paperclip

+28

Если вы ожидаете ответа массива, как работает исходный '-> json()', используйте 'json_decode ($ response- > getBody(), true) 'вместо этого, чтобы получить массив вместо stdObject –

77

Вы переключитесь на:

json_decode($response->getBody(), true) 

Вместо другой комментарий, если вы хотите работать именно так, как до того, чтобы получить массивы вместо объектов.

Смежные вопросы