我是JSON的新手,在出现错误时检查收到错误消息时遇到问题。当结果不是错误时,我的代码工作正常,所以我有点理解我在做什么 这是我试图解析的错误JSON:
{
"error": {
"message": "Unsupported get request.",
"type": "GraphMethodException",
"code": 100
}
}
这是我的代码失败:
$jsonurl = "http://graph.facebook.com/JubilationDanceMinistry";
//valid $jsonurl = "http://graph.facebook.com/WhitworthACM";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);
var_dump($json_output);
// This returns NULL
if (property_exists($json_output->error)) {
echo "<p>error: $json_output->error->{'message'} </p>";
} else {
echo "<p>no error :(</p>";
}
$facebook_id = $json_output->{'id'};
$facebook_name = $json_output->{'name'};
$facebook_link = $json_output->{'link'};
答案 0 :(得分:1)
因为网址会返回400 Bad Request
。
默认情况下,当http状态代码为file_get_contents
时,您无法使用400
函数获取响应内容。
您需要将ignore_errors
选项设置为true
。
$opts = array(
'http'=>array(
'ignore_errors' => true
)
);
$context = stream_context_create($opts);
$jsonurl = "http://graph.facebook.com/JubilationDanceMinistry";
$json = file_get_contents($jsonurl, false, $context);
var_dump($json);
答案 1 :(得分:0)
您不能使用字符串插值链接多个->
。
您可以使用多个参数传递给echo
或字符串连接:
echo "<p>error: ", $json_output->error->{'message'}, " </p>";