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