PHP конвертировать строковый ответ в массив из API - PullRequest
0 голосов
/ 11 июля 2019

У меня есть следующее значение, которое возвращается через API:

[{"message":"No transactions found"}]

эта информация возвращается в виде строки, и я хотел бы преобразовать ее в JSON или массив.У меня есть следующие две опции:

 $decoded_msg = json_decode($mpesa_offline_status,TRUE);

                    echo $decoded_msg['message'];

, которые возвращают предупреждающее сообщение: Message: Illegal string offset 'message', а также эта опция:

  $decoded_msg = json_decode($mpesa_offline_status,TRUE);

                    echo $decoded_msg->message;

, и я получаю следующую ошибку:

Message: Trying to get property 'message' of non-object

как я могу подойти к этому?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Наличие [] с этим ответом API означает, что при использовании json_decode() это создаст многомерный массив, здесь [] будет преобразовано в 0 индекс, а message будет ассоциироваться с 0 index что-то вроде:

Array
(
    [0] => Array
        (
            [message] => No transactions found
        )
)

Для этого, если вы хотите получить доступ к индексу message, который внутри индекса 0, вы можете получить доступ как:

<?
$string = '[{"message":"No transactions found"}]';
$decode = json_decode($string,true);
echo $decode[0]['message']; // No transactions found
?>

Примечание:

Message: Illegal string offset 'message' ошибка не означает, что для включения свойства вместо массива это сообщение означает, что вы пытаетесь получить доступ к строковому значению, которое является массивом.

0 голосов
/ 11 июля 2019

У вас есть массив messages, поэтому вы не можете получить доступ к «сообщению» на верхнем уровне.

$mpesa_offline_status = '[{"message":"No transactions found"}]';
$decoded_msg = json_decode($mpesa_offline_status, true);

var_dump($decoded_msg[0]['message']);

вам нужен доступ к действительному индексу.То же самое с этим:

$mpesa_offline_status = '[{"message":"No transactions found"}]';
$decoded_msg = json_decode($mpesa_offline_status, false);

var_dump($decoded_msg[0]->message);
...