URL से JSON ऑब्जेक्ट प्राप्त करें


146

मेरे पास एक URL है जो इस तरह से JSON ऑब्जेक्ट लौटाता है:

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

मैं access_tokenमूल्य प्राप्त करना चाहता हूं । तो मैं इसे PHP के माध्यम से कैसे प्राप्त कर सकता हूं?


1
json_decode($your_string)चाल करना चाहिए
d4rkpr1nc3

पर एक नज़र डालें stackoverflow.com/questions/4343596/parsing-json-file-with-php
ophintor

जवाबों:


358
$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);

आप curlurl प्राप्त करने के लिए भी उपयोग कर सकते हैं । कर्ल का उपयोग करने के लिए, आप यहां दिए गए उदाहरण का उपयोग कर सकते हैं :

$ch = curl_init();
// IMPORTANT: the below line is a security risk, read https://paragonie.com/blog/2017/10/certainty-automated-cacert-pem-management-for-php-software
// in most cases, you should set it to true
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 से कैसे मिलती है फिर json ऑब्जेक्ट तक पहुंचें?
user2199343

इस लाइन पर त्रुटि आई $ $ obj ['access_token']; घातक त्रुटि: F: \ wamp \ www \ sandbox \ linkedin \ test.php पर पंक्ति 22 में टाइप stdClass के ऑब्जेक्ट का उपयोग नहीं किया जा सकता है
user2199343

1
@ user2199343 यदि आप परिणाम को सरणी के रूप में उपयोग करना चाहते हैं, तो json_decode फ़ंक्शन में ", सही" का उपयोग करें। उदाहरण के लिए मेरा उत्तर देखें।
netblognet

file_get_contents ( 'url'); इसका उल्लेख करने में एक त्रुटि है
user2199343

1
आप इस लाइन को रनटाइम पर ini_set("allow_url_fopen", 1);सक्षम करने के लिए सबसे ऊपर रख सकते हैं allow_url_fopen
C ա '

25
$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

1
मैं 1 कारण के लिए चुने गए उत्तर पर इस जवाब को पसंद करूंगा क्योंकि केवल पार्स जोंस में डैश कैरेक्टर एक्स के साथ इंडेक्स हो सकता है: {"फुल-नेम": "खलील", "फैमिलि-नेम": "जो भी"} ऐकोडिंग के रूप में डिकोडिंग रखेंगे आप सुरक्षित पक्ष पर
खलील अवदा

17

आप 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नहीं कहा जाता है $json_decode
czerasz

8
// 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);

कोड के लिए कोड ब्लॉक फॉर्मेटिंग को प्राथमिकता दें, और व्याख्यात्मक टिप्पणियां, खासकर अगर कोड विशेष रूप से सीधे सवाल का जवाब नहीं देता है (इस मामले में अलग-अलग प्रमुख नाम आदि हैं)
elliot42

7

आपको json_decode फ़ंक्शन http://php.net/manual/en/function.json-decode.pp के बारे में पढ़ने की आवश्यकता है

हेयर यू गो

$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']);

3
$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;

2
StackOverflow में आपका स्वागत है! इस सवाल का पहले ही कई बार जवाब दिया जा चुका है! कृपया इस बात पर विस्तृत चर्चा करें कि कैसे आपका उत्तर अलग है और कुछ कोड डंप करने के बजाय दूसरों को बेहतर बनाता है।
T3 H40

2

file_get_contents()url से डेटा प्राप्त नहीं कर रहा है, तो मैंने कोशिश की curlऔर यह ठीक काम कर रहा है।


1

मेरा समाधान केवल अगले मामलों के लिए काम करता है: यदि आप एक एकल में एक बहु-विषयक सरणी को गलत कर रहे हैं

$json = file_get_contents('url_json'); //get the json
$objhigher=json_decode($json); //converts to an object
$objlower = $objhigher[0]; // if the json response its multidimensional this lowers it
echo "<pre>"; //box for code
print_r($objlower); //prints the object with all key and values
echo $objlower->access_token; //prints the variable

मुझे पता है कि इसका जवाब पहले ही दिया जा चुका है, लेकिन जो लोग यहां आ रहे हैं उनके लिए मुझे उम्मीद है कि यह आपकी मदद कर सकता है


0

जब आप curlकभी-कभी उपयोग कर रहे हों तो आपको ब्राउजर का अनुकरण करने के लिए इस लाइन को जोड़कर 403 (एक्सेस फॉरबिडन) दिया जाता है।

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

आशा है कि यह किसी की मदद करेंगे।


0

हमारे समाधान, प्रतिक्रिया के लिए कुछ मान्यताओं को जोड़ना ताकि हमें यकीन है कि हमारे पास $ json चर में एक अच्छी तरह से बनाई गई json वस्तु है

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
if (! $result) {
    return false;
}

$json = json_decode(utf8_encode($result));
if (empty($json) || json_last_error() !== JSON_ERROR_NONE) {
    return false;
}

0
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'https://www.xxxSite/get_quote/ajaxGetQuoteJSON.jsp?symbol=IRCTC&series=EQ');
//Set the GET method by giving 0 value and for POST set as 1
//curl_setopt($curl_handle, CURLOPT_POST, 0);
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
$data = json_decode($query, true);
curl_close($curl_handle);

//print complete object, just echo the variable not work so you need to use print_r to show the result
echo print_r( $data);
//at first layer
echo $data["tradedDate"];
//Inside the second layer
echo $data["data"][0]["companyName"];

कुछ समय के लिए आपको 405 मिल सकते हैं, विधि प्रकार को सही ढंग से सेट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.