php youtube json解码

yul*_*ika 3 php json

我尝试使用JSON解码来获取youtube API提要.但是,当我粘贴JSON结果时,http://www.jsonlint.com/我注意到了类似的东西

"media$group": {
  "media$category": [
Run Code Online (Sandbox Code Playgroud)

不幸的是,某些符号被php拒绝.这是我的代码,我试图删除这个$符号,但可能没有成功.我该如何解决这个问题?

$url = 'http://gdata.youtube.com/feeds/api/videosq=football&orderby=published&v=2&alt=json';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$body1 = curl_exec($ch);
$body = str_replace('$','', $body1);
curl_close($ch);
$data = json_decode($body);
foreach ($data->feed->entry as $result) { 
...
}
Run Code Online (Sandbox Code Playgroud)

mar*_*rio 8

您的问题是使用PHP标识符来访问内容.这里最简单的解决方案是获取数组而不是对象:

$data = json_decode ( $json , $assoc = true );
Run Code Online (Sandbox Code Playgroud)

这允许访问以下字段:

echo $result['media$group']['media$description'];
Run Code Online (Sandbox Code Playgroud)

如果你想保留对象的语法,这可能与这个kludge:

echo $result->{'media$group'}->{'media$category'};
Run Code Online (Sandbox Code Playgroud)

(但是数组在这里更安全.如果格式更改和属性不存在,则不会出现致命错误.)