JSON到PHP变量

时间:2015-04-23 17:44:02

标签: php json api

这是我的JSON API调用的输出

    {
  "response": {
    "status":200,
    "message":"",
    "startRow":0,
    "endRow":27,
    "totalRows":27,
    "data":[
      {
        "id":5,
        "start":42364236,
        "end":436234523,
        "startTimeSlot": 1,
        "endTimeSlot": 1,
        "subjects":["ne"],
        "teachers":["KRO"],
        "groups":["v1a"],
        "locations":["M92"],
        "type":"lesson",
        "remark":"Take care to bring your books",
        "valid":true,
        "cancelled":false,
        "modified":true,
        "moved":false,
        "new":false,
        "changeDescription":"The location has been changed from M13 to M92"
      },
      ...
    ]
  }
}
通过PHP

请求

$curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https:// [api request url]',
));
$resp = curl_exec($curl);

我想通过“foreach'”来描述这些结果。变量中的php命令。像这样:

foreach ($resp->response->data as $object): {

$subjects = $object->subjects

但我怎么能做到这一点?上面描述的方式不起作用..我已经尝试了很多脚本..

2 个答案:

答案 0 :(得分:0)

您实际上并未将下载的输出解码为数组。 你需要使用json_decode();在您的数据上,将其转换为数组或对象。

$resp = json_decode($resp);

将创建一个对象。

$resp = json_decode($resp, true);

将创建一个数组。

答案 1 :(得分:0)

此代码无法工作的原因是因为curl将json作为字符串。所以你要做的就是循环一个普通的字符串而不是一个数组。

您可以使用它将您的json字符串转换为关联数组:

json_decode($resp, true);

当它以关联数组转换时,您可以按照json格式编写的方式简单地使用数据,并且可以轻松地遍历它。