出于某种原因,我没有从json_decode获得预期的输出。 JSON字符串从API调用返回,字符串的第一部分如下所示:
{"droplets":[{"id":67892618,"name":"NEW-TEK","memory":8192,"vcpus":4,"disk":20,blah blah blah
以下是我正在使用的代码的相关部分:
function Test() {
$ch = curl_init('https://api.digitalocean.com/v2/droplets?tag_name=MYTAG');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer MYTOKEN','Content-Type: application/json'));
$json = curl_exec($ch);
$obj = json_decode($json,true);
echo 'Just making sure everything is working up till here!';
echo "\n\n";
$id = $obj->{'id'};
echo 'Droplet ID: ';
echo $id;
exit;
}
忽略所有随机回声线和新线条。只是让例子易于阅读。正如你所看到的,没有任何东西被拉出数组并回响。
答案 0 :(得分:4)
由于您正在使用$obj = json_decode($json,true);
,true
会使输出成为数组,而不是您尝试在此处使用的对象$id = $obj->{'id'};
以下是数组的外观:
Array
(
[droplets] => Array
(
[0] => Array
(
[id] => 67892618
[name] => NEW-TEK
[memory] => 8192
[vcpus] => 4
[disk] => 20
)
)
)
而是使用$id = $obj['droplets'][0]['id'];
,因为您必须识别要查看的数组的片段。