从数组对象PHP中提取JSON数据

时间:2015-03-12 16:48:58

标签: php json

鉴于我所读到的一切,我非常接近。真的,我一直在努力解决这个问题并试图理解这几天。无尽的谷歌搜索,以及php手册阅读的例子。我只是觉得我没有打过AHA!与我点击的那一刻。

JSON来源

object(stdClass)#1 (2) {
  ["type"]=>
   string(7) "success"
   ["response"]=>
   object(stdClass)#2 (2) {
    ["data"]=>
    object(stdClass)#3 (1) {
     ["songs"]=>
     array(10) {
     [0]=>
     object(stdClass)#4 (2) {
      ["title"]=>
      string(36) "Red Hot Chilly Peppers - Scar Tissue"
      ["time"]=>
      int(1426114367)
    }
    [1]=>
    object(stdClass)#5 (2) {
      ["title"]=>
      string(29) "Rock Solid Radio Station ID 2"
      ["time"]=>
      int(1426114359)
    }
    [2]=>
    object(stdClass)#6 (2) {
      ["title"]=>
      string(32) "Nirvana - Come As You Are (1991)"
      ["time"]=>
      int(1426114150)
         }
}
["message"]=>
string(8) "Complete"
}
}

JSON All Pretty(来自验证者)

{
"type": "success",
"response": {
    "data": {
        "songs": [
            {
                "title": "I Bet My Life - Imagine Dragons - I Bet My Life -                 Imagine Dragons",
                "time": 1426176140
            },
            {
                "title": "Smashing Pumpkins - Mayonaise",
                "time": 1426175786
            }               
        ]
    },
    "message": "Complete"
}
}

尝试获取列表中第一首歌曲的标题,而不是所有出现的歌曲。

这是我的代码看起来像

<?php
error_reporting(E_ALL);
$str = "http://url/to/JSON";
$json = json_decode($str);

echo $json['type']['response']['data']['songs'][0]->title;

?>

我收到此错误。 注意:尝试在第6行的/home/WackyShmacky/public_html/ouch/test/example2.php中获取非对象的属性

第6行:

echo $json['type']['response']['data']['songs'][0]->title;

这显然是一个正确的语法和格式问题,我看了很多例子,它仍然没有点击我。非常感谢帮助,所以我可以把它放在我身后。

2 个答案:

答案 0 :(得分:3)

http://codepad.org/hZBrhCZ8

<?php
error_reporting(E_ALL);
$str = file_get_contents("http://url/to/JSON"); // Don't forget to retreive the content of the json form the URL
$json = json_decode($str, true); // Set 2nd parameter to true return an associative array

echo $json['response']['data']['songs'][0]['title']; // Right path using an associative array

?>

说明:

当json_decode的第二个参数设置为true时,该函数返回一个非常接近JSON结构的关联数组。

从那里你要做的就是将JSON路径放回到关联的php数组中以访问想要的值!

更多信息:

答案 1 :(得分:0)

您需要解码为关联数组,它看起来像'type','response'处于同一级别,而不是嵌套所以你想要:

$json = json_decode($str, true);
echo $json['response']['data']['songs'][0]['title'];

单独获取类型:

echo echo $json['type'];