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 を echo すると、以下の 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 に答える