我尝试使用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)
您的问题是使用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)
(但是数组在这里更安全.如果格式更改和属性不存在,则不会出现致命错误.)