无法使用json_decode

时间:2017-10-26 19:25:52

标签: php json

出于某种原因,我没有从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;
}

忽略所有随机回声线和新线条。只是让例子易于阅读。正如你所看到的,没有任何东西被拉出数组并回响。

enter image description here

1 个答案:

答案 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'];,因为您必须识别要查看的数组的片段。