从URL获取JSON对象

我有一个URL返回一个像这样的JSON对象:

{ "expires_in":5180976, "access_token":"AQXzQgKTpTSjs-qiBh30aMgm3_Kb53oIf-VA733BpAogVE5jpz3jujU65WJ1XXSvVm1xr2LslGLLCWTNV5Kd_8J1YUx26axkt1E-vsOdvUAgMFH1VJwtclAXdaxRxk5UtmCWeISB6rx6NtvDt7yohnaarpBJjHWMsWYtpNn6nD87n0syud0" } 

我想获得access_token值。 那么如何通过PHP检索?

 $json = file_get_contents('url_here'); $obj = json_decode($json); echo $obj->access_token; 

为此, file_get_contents要求启用allow_url_fopen 。 这可以在运行时通过包括:

 ini_set("allow_url_fopen", 1); 

你也可以使用curl来获取url。 要使用curl,你可以使用这里find的例子:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'url_here'); $result = curl_exec($ch); curl_close($ch); $obj = json_decode($result); echo $obj->access_token; 
 $url = 'http://.../.../yoururl/...'; $obj = json_decode(file_get_contents($url), true); echo $obj['access_token']; 

PHP也可以使用破折号的属性:

 garex@ustimenko ~/src/ekapusta/deploy $ psysh Psy Shell v0.4.4 (PHP 5.5.3-1ubuntu2.6 — cli) by Justin Hileman >>> $q = new stdClass; => <stdClass #000000005f2b81c80000000076756fef> {} >>> $q->{'qwert-y'} = 123 => 123 >>> var_dump($q); class stdClass#174 (1) { public $qwert-y => int(123) } => null 

你可以使用PHP的json_decode函数:

 $url = "http://urlToYourJsonFile.com"; $json = file_get_contents($url); $json_data = json_decode($json, true); echo "My token: ". $json_data["access_token"]; 

你需要阅读有关json_decode函数http://php.net/manual/en/function.json-decode.php

干得好

 $json = '{"expires_in":5180976,"access_token":"AQXzQgKTpTSjs-qiBh30aMgm3_Kb53oIf-VA733BpAogVE5jpz3jujU65WJ1XXSvVm1xr2LslGLLCWTNV5Kd_8J1YUx26axkt1E-vsOdvUAgMFH1VJwtclAXdaxRxk5UtmCWeISB6rx6NtvDt7yohnaarpBJjHWMsWYtpNn6nD87n0syud0"}'; //OR $json = file_get_contents('http://someurl.dev/...'); $obj = json_decode($json); var_dump($obj-> access_token); //OR $arr = json_decode($json, true); var_dump($arr['access_token']); 
 // Get the string from the URL $json = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452'); // Decode the JSON string into an object $obj = json_decode($json); // In the case of this input, do key and array lookups to get the values var_dump($obj->results[0]->formatted_address); 
 $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'url_here'); $result = curl_exec($ch); curl_close($ch); $obj = json_decode($result); echo $obj->access_token; 

file_get_contents()不是从url中获取数据,然后我试着curl ,它工作正常。