Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析JSON对象的问题_Php_Json_Parsing_Object_Spotify - Fatal编程技术网

Php 解析JSON对象的问题

Php 解析JSON对象的问题,php,json,parsing,object,spotify,Php,Json,Parsing,Object,Spotify,我的网站调用Spotify Web API并获取给定用户的所有公共播放列表。响应最初是JSON格式的,但我的代码会对其进行解码 我希望代码做的下一件事是只显示响应中每个项目的对象[external\u url]、[name]和[tracks]。为此,我尝试了以下方法: foreach($response_2['items'] as $item) { echo 'Link: ' . $item['external_urls'] . '<br />'; echo 'Name: ' .

我的网站调用Spotify Web API并获取给定用户的所有公共播放列表。响应最初是JSON格式的,但我的代码会对其进行解码

我希望代码做的下一件事是只显示响应中每个项目的对象[external\u url][name][tracks]。为此,我尝试了以下方法:

foreach($response_2['items'] as $item) {
echo 'Link: ' . $item['external_urls'] . '<br />'; 
echo 'Name: ' . $item['name'] . '<br />';
echo 'Tracks: ' . $item['tracks'] . '<br />'; }

external\u url
track
都是对象。为了获取数据,您需要知道确切的属性,或者将它们转换为数组
(array)
,并遍历新创建的数组以确保输出所有值。由于名称是复数的,我假设您可以有多个外部url和多个曲目。因此,我将属性强制转换为数组并遍历它们:

foreach($response_2['items'] as $item) {
    echo "LINKS <br />";
    $item['external_urls'] = (array)$item['external_urls'];
    foreach($item['external_urls'] as $key => $value) {
        echo ucfirst($key) . ": " . $value . "<br />";
    }
    echo "Name: " . $item['name'] . "<br />";
    echo "TRACKS <br />";
    $item['tracks'] = (array)$item['tracks'];
    foreach($item['tracks'] as $key => $value) {
        echo ucfirst($key) . ": " . $value . "<br />";
    } 
}
项目1的样本输出:

LINKS
Spotify: http://open.spotify.com/user/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c
Name: Wizzlers Big Playlist
TRACKS
Href: https://api.spotify.com/v1/users/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c/tracks
Total: 30

可能重复你之前的问题也适用于这里。无法使用
echo
输出对象和数组。对对象和数组使用
var\u dump()
print\u r()
。正如我在问题中提到的,我已经尝试过:“我想我应该对这些对象使用print\u r(),但我无法让它工作。”。我可以混合使用相同的“foreach”吗?当我这样做时,当我使用这个时,它仍然得到“Array:
print_r('Link:'。$item['external_url'].
回送强制将数组转换为字符串。将其与另一个字符串连接并在后面调用print\r也是如此。谢谢!起初它不起作用,但后来我注意到“echo ucfirs”缺少一个“t”。我如何显示这样的项:在他的例子中,它们是数组,而不是对象。注意他是如何调用json_decode的。谢谢大家!这是我使用的代码,
foreach($response_2['items']作为$item){$item['external_url']=(array)$item['external_url'];foreach($item['external_url']作为$key=>$value){echo.”“
“;}
它显示每个播放列表(项目),如下所示:
foreach($response_2['items'] as $item) {
    echo "LINKS <br />";
    $item['external_urls'] = (array)$item['external_urls'];
    foreach($item['external_urls'] as $key => $value) {
        echo ucfirst($key) . ": " . $value . "<br />";
    }
    echo "Name: " . $item['name'] . "<br />";
    echo "TRACKS <br />";
    $item['tracks'] = (array)$item['tracks'];
    foreach($item['tracks'] as $key => $value) {
        echo ucfirst($key) . ": " . $value . "<br />";
    } 
}
foreach($response_2['items'] as $item) {
    echo "LINKS <br />";
    echo "Spotify: " . $item['external_urls']->spotify . "<br />";
    echo "Name: " . $item['name'] . "<br />";
    echo "TRACKS <br />";
    echo "Href: " . $item['tracks']->href . "<br />";
    echo "Total: " . $item['tracks']->total . "<br />";
}
LINKS
Spotify: http://open.spotify.com/user/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c
Name: Wizzlers Big Playlist
TRACKS
Href: https://api.spotify.com/v1/users/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c/tracks
Total: 30