鉴于我所读到的一切,我非常接近。真的,我一直在努力解决这个问题并试图理解这几天。无尽的谷歌搜索,以及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;
这显然是一个正确的语法和格式问题,我看了很多例子,它仍然没有点击我。非常感谢帮助,所以我可以把它放在我身后。
答案 0 :(得分:3)
<?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'];