1

我使用下面的代码来获取一个 url,这成功了,它返回一个 json 数据

$url =  "https://graph.facebook.com/me?access_token=".$access_token;


    function fetch_url($url){

        import java.net.URL;
        import java.io.BufferedReader;
        import java.io.InputStreamReader;

        $java_url = new URL($url);
        $java_bufferreader = new BufferedReader(new InputStreamReader($java_url->openStream()));

        while (($line = $java_bufferreader->readLine()) != null) {
            $content .= $line;
        }

        return $content;
    }

    // Sample usage:
    $friends = fetch_url($url);

当我回显 $friends 时,我得到以下 json 代码,

{

   "id": "100003185423323",
   "name": "hnu Chid",
   "first_name": "hnu",
   "last_name": "Chid",
   "link": "http://www.facebook.com/ilovaddddd",
   "username": "ilddddd",
   "education": [
      {
         "school": {
            "id": "182225911846032",
            "name": "Sunean"
         },
         "type": "High School"
      },
      {
         "school": {
            "id": "105504952817559",
            "name": "Sathya University"
         },
         "type": "College"
      }
   ],
   "gender": "female",
   "timezone": 5.5,
   "locale": "en_US",
   "verified": true,
   "updated_time": "2012-09-18T18:37:57+0000"
}

我不能在 GAE 上使用 json 解码,当我尝试 json 解码时出现服务器错误,有没有其他方法可以在 php 上解析它,请帮助我。

4

2 回答 2

2

1. 确保 json_decode 存在(已启用)。

<?php
if (function_exists('json_decode')) {
    echo "json_decode functions is available.<br />\n";
} else {
    echo "json_decode functions is not available.<br />\n";
}
?>

2. 使用try catch 捕捉解析错误。

<?php
try {
     $response = json_decode($friends, true);
     print_r($response);
} catch (Exception $ex) {
     echo 'Caught exception: ',  $ex->getMessage(), "<br/>\n";
     var_dump($friends);
}
?>

3. 在http://php.net/manual/en/function.json-decode.php阅读更多内容

于 2012-09-25T12:34:05.073 回答
1

如果功能正常,也尝试在此处验证 JSON 响应。 http://jsonformatter.curiousconcept.com/ 我试过发布的,它看起来有效。但我建议您出于安全原因可能会更改某些内容。

于 2012-09-25T12:39:01.173 回答