URL থেকে JSON অবজেক্ট পান


146

আমার একটি ইউআরএল রয়েছে যা এই জাতীয় একটি JSON বস্তুটি ফেরত দেয়:

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

আমি access_tokenমান পেতে চাই । সুতরাং আমি কীভাবে এটি পিএইচপি এর মাধ্যমে পুনরুদ্ধার করতে পারি?


1
json_decode($your_string)কৌশলটি করা উচিত
d4rkpr1nc3

উত্তর:


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

আপনি curlইউআরএল পেতে ব্যবহার করতে পারেন। কার্ল ব্যবহার করতে, আপনি এখানে পাওয়া উদাহরণটি ব্যবহার করতে পারেন :

$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 অবজেক্টটি অ্যাক্সেস করব?
ব্যবহারকারী 2199343

এই লাইনে ত্রুটিটি এসেছিল প্রতিধ্বনি $ আপত্তি ['অ্যাক্সেস_ টোকেন']; মারাত্মক ত্রুটি: এফ: \ wamp \ www \ স্যান্ডবক্স \ লিংকডইন \ test.php এ অ্যারে হিসাবে স্টার্টক্লাস টাইপের অবজেক্টটি ব্যবহার করা যাবে না
ব্যবহারকারী 2199343

1
@ ব্যবহারকারী2199343 আপনি যদি ফলাফলটি অ্যারে হিসাবে ব্যবহার করতে চান তবে json_decode ফাংশনে ", সত্য" ব্যবহার করুন। উদাহরণস্বরূপ আমার উত্তর দেখুন।
নেটব্লগনেট

file_get_contents ( 'URL'); এখানে উল্লেখ করে একটি ত্রুটি রয়েছে
ব্যবহারকারী 2199343

1
রানটাইম ini_set("allow_url_fopen", 1);সক্ষম করতে আপনি এই লাইনটি শীর্ষে রাখতে পারেন allow_url_fopen
সি ԃ ԃ

25
$url = 'http://.../.../yoururl/...';
$obj = json_decode(file_get_contents($url), true);
echo $obj['access_token'];

পিএইচপিও ড্যাশ সহ বৈশিষ্ট্যগুলি ব্যবহার করতে পারে:

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

আপনি পিএইচপি এর 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);

কোডের জন্য কোড ব্লক বিন্যাসকরণ এবং ব্যাখ্যামূলক মন্তব্যে অগ্রাধিকার দিন, বিশেষত যদি কোডটি বিশেষভাবে সরাসরি প্রশ্নের উত্তর না দেয় (এই ক্ষেত্রে বিভিন্ন মূল নাম ইত্যাদি রয়েছে)
এলিওট 42

7

আপনাকে 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']);

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
স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম! এই প্রশ্নের ইতিমধ্যে একাধিকবার উত্তর দেওয়া হয়েছে! আপনার উত্তরটি কীভাবে আলাদা হয় এবং কিছু কোড ফেলে দেওয়ার পরিবর্তে কীভাবে অন্যকে উন্নত করে তা দয়া করে বিশদভাবে বর্ণনা করুন।
T3 এইচ 40

2

file_get_contents()ইউআরএল থেকে ডেটা আনছে না, তারপরে আমি চেষ্টা করেছি 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

আমাদের সমাধান, প্রতিক্রিয়াতে কিছু বৈধতা যুক্ত করে যাতে আমরা নিশ্চিত যে we 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 পেতে পারেন, সঠিকভাবে পদ্ধতি টাইপ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.