PHP将字符串响应从API转换为数组

时间:2019-07-11 12:43:31

标签: php arrays json

我具有通过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 :(得分:0)

您有一个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);

答案 1 :(得分:0)

具有[]的API响应意味着,当您使用json_decode()时,它将生成一个多维数组,此处[]将被转换为0索引和{{ 1}}将与message索引相关联,例如:

0

为此,如果要访问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 ?> 错误并不意味着要切换到属性而不是数组,此消息表示您正在尝试访问作为数组的字符串值。