Доступ к данным JSON, возвращенным SendGrid

Я работаю с библиотекой PHP SendGrid ( https://sendgrid.com/docs/Integrate/Code_Examples/php.html).

Ответ отправляется задом JSON - например, должно быть что-то вроде:

{"message":"success"}

Я могу отправить простое электронное письмо через:

<?php
$root="../../";
require $root . 'vendor/autoload.php';

$sendgrid = new SendGrid($SendGrid);
$email = new SendGrid\Email();
$email
    //->addTo('you@me.com')
    ->addTo('you@me.com')
    ->setFrom('me@bar.com')
    ->setSubject('Subject goes here')
    ->setText('Hello World!')
    ->setHtml('<strong>Hello World!</strong>')
;

$res = $sendgrid->send($email);
?>

Когда я отображаю вывод $res, например, используя PHP-REF ( https://github.com/digitalnature/php-ref), я вижу, что это выглядит так:

PHP-REF-представление $res, возвращаемое SendGrid

Похоже, ответ является объектом - предположительно JSON?

Тем не менее, я не могу получить доступ к данным как JSON, потому что если я попробую это:

$newtxt = json_decode($res);

Я получаю эту ошибку:

Предупреждение: json_decode() ожидает, что параметр 1 будет строкой, объект указан в C:\xampp\htdocs\jim\001-jimpix\contact_old\test-send-grid.php в строке 24

И если я попробую это:

$j_array = json_decode($res, true);

Я получаю ту же ошибку.

Я могу жестко закодировать значение "$res" как:

$res = "{\"message\":\"success\"}";

И тогда это работает.

Однако я не могу понять, как получить доступ к JSON, возвращенному SendGrid.

Я пробовал разные вещи, такие как:

$res = json_decode(json_encode($res),TRUE);

Предположительно, есть способ получить доступ к JSON, возвращенному SendGrid, чтобы я мог получить доступ к данным JSON.

Но я не знаю как?

1 ответ

Решение

Как вы можете видеть из ответа PHP-REF, $res это не сырой JSON.

Вы можете получить доступ к результату, просто используя $res->getBody(), Это даст вам проанализированный JSON из SendGrid.

Вам не нужно json_decode этот.

Другие вопросы по тегам