我正在用调用apiwp_remote_get
我似乎无法分析结果。
下面是我如何调用api的:
$url = \'https://blah/api/data/\';
$args = array(
\'headers\' => array(
\'Authorization\' => \'Token \' . $my_token,
),
);
$data = wp_remote_get($url, $args);
$data = json_encode($data);
API响应如下所示:
`{
"headers": {},
"body": "[{\\"name\\":\\"bob\\",\\"email\\":\\"[email protected]\\",\\"first_name\\":\\"Bob\\",\\"last_name\\":\\"Bob\\"}]"
"response": {
"code": 200,
"message": "OK"
},
"cookies": [],
"filename": null,
"http_response": {
"data": null,
"headers": null,
"status": null
}
}`
现在,我想在主体中循环,它有我想要存储的数据。当我尝试时:
foreach($data["body"] as $datapoint){
//blah
}
我得到以下错误:
PHP Warning: Illegal string offset \'body\'
我无法循环查看数据。我似乎无法理解,使用json\\u encode不应该允许我将响应视为json对象吗?
感谢您的帮助!非常感谢。
最合适的回答,由SO网友:Jacob Peattie 整理而成
我似乎无法理解,使用json\\u encode不应该允许我将响应视为json对象吗?
它确实允许您将其视为JSON对象,但这在PHP中是无用的。您希望将结果从JSON转换为PHP数组。
所需步骤包括:
发出远程GET请求确认请求成功获取响应的主体并将JSON解码到PHP数组中看起来是这样的:
$request = wp_remote_get(
\'https://blah/api/data/\',
[
\'headers\' => [
\'Authorization\' => \'Token \' . $my_token,
],
]
);
if ( ! is_wp_error( $request ) ) {
$body = wp_remote_retrieve_body( $request );
$data = json_decode( $body );
foreach ( $data as $datapoint ) {
echo $datapoint->name;
echo $datapoint->email;
// etc.
}
}