অ্যারে যাও json_decode


422

আমি একটি জেএসএন স্ট্রিংটিকে একটি অ্যারেতে ডিকোড করার চেষ্টা করছি তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি।

মারাত্মক ত্রুটি: stdClass টাইপের অবজেক্টটি সি: \ wamp \ www \ temp \ Asklaila.php এ অ্যারে হিসাবে ব্যবহার করতে পারবেন না

কোডটি এখানে:

<?php
$json_string = 'http://www.domain.com/jsondata.json';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>

1
আপনি যদি এর $ob->Resultপরিবর্তে অ্যাক্সেস করেন তবে এটি কাজ করবে ।
ল্যাপিন

উত্তর:


839

অনুযায়ী ডকুমেন্টেশন , আপনি যদি আপনি একটি বস্তু থেকে পরিবর্তে একটি মিশুক অ্যারে চান নির্দিষ্ট করতে হবে json_decode, এই কোড হবে:

json_decode($jsondata, true);

4
এটি প্রশ্নটি জাগায়, এটি অ্যারে হিসাবে ফিরে আসার সুবিধা কী কী এবং কোনও বস্তু নয়?
ফক্সিনি

52
এটা প্রশ্ন উত্থাপন। "একটি প্রশ্ন জিজ্ঞাসা করা" এর অর্থ এমন কিছু ধরে নেওয়া যা প্রমাণিত হওয়া বাকি ( রেফ )। উভয় ক্ষেত্রেই সুবিধাটি হতে পারে যে ওপিতে বস্তুর তুলনায় আরামদায়ক ট্র্যাকিং অ্যারে বা অন্য কিছু ইতিমধ্যে প্রয়োগ করা হয়েছে, কোডটির একটি অ্যারের প্রয়োজন।
jamesnotjim

8
@ জেমসনটজিম ডিফল্ট বাস্তবায়ন যা কোনও বস্তুকে রিটার্ন দেয় তা এই প্রশ্নটি করতে পারে যে অ্যারেগুলির চেয়ে অবজেক্টগুলি ভাল রিটার্নের মান, তাই না কি করতে পারে?
ডেভিড মান

7
নিঃসন্দেহে এটি ডেভিডম্যানকে পারে Touche!
jamesnotjim

8
আমি মন্তব্যটি যুক্ত করব (বহু বছর পরেও) যে জেএসওএন-তে ডেটা ব্যতীত অন্য কিছু থাকার সম্ভাবনা নেই যা এটিকে বিভ্রান্তকর "ডিফল্ট" পছন্দ করে তোলে।
ব্যারি

45

এটা চেষ্টা কর

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);

27

এটি দেরীতে অবদান, তবে castালাইয়ের জন্য একটি বৈধ কেস json_decodeরয়েছে (array)
নিম্নোক্ত বিবেচনা কর:

$jsondata = '';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
    echo $v; // etc.
}

যদি $jsondataকখনও খালি স্ট্রিং হিসাবে ফিরে আসে (আমার অভিজ্ঞতা হিসাবে এটি প্রায়শই হয়) json_decodeফিরে আসবে NULL, এর ফলে ত্রুটি হবে সতর্কতা: লাইন 3 এ ফোরচ () এর জন্য সরবরাহ করা অবৈধ যুক্তি । আপনি যদি / তারপরে কোড বা একটি টেরিনারি অপারেটরের একটি লাইন যুক্ত করতে পারেন তবে আইএমও এটি ক্লিনারটি কেবল লাইন 2 এ পরিবর্তন করতে ...

$arr = (array) json_decode($jsondata,true);

... আপনি যদি json_decodeএকসাথে কয়েক মিলিয়ন বড় অ্যারে ইনগ না করে থাকেন, তবে @ TCB13 হিসাবে উল্লেখ করা হয়েছে যে, কর্মক্ষমতা নেতিবাচকভাবে প্রভাবিত হতে পারে।



6

পিএইচপি ডকুমেন্টেশন json_decode ফাংশন অনুসারে এসোস নামের একটি প্যারামিটার রয়েছে যা প্রত্যাবর্তিত বস্তুকে এসোসিয়েটিভ অ্যারে রূপান্তর করে

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

যেহেতু অ্যাসোসিয়েশন প্যারামিটারটি FALSEডিফল্টরূপে থাকে তাই TRUEঅ্যারে পুনরুদ্ধার করতে আপনাকে এই মানটি সেট করতে হবে।

উদাহরণস্বরূপ নিহতের জন্য নীচের কোডটি পরীক্ষা করুন:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

কোন ফলাফল:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

5

এটি এটিকে অ্যারেতেও পরিবর্তন করবে:

<?php
    print_r((array) json_decode($object));
?>

6
CPU- র / মেমরি এই নষ্ট, যেমন প্রস্তাবিত করে ঠিক একই, অভ্যন্তরীণভাবে অনেক দ্রুত। json_decode($object, true);true
টিসিবি

1
@ টিসিবি 13 যদি আপনার দুজনেরই দরকার হয় এবং আবার ডিকোড চালাতে না চান তবে
জিমি কেন

3
@ জিমিকেনের সাথে কনকুর আমি চেষ্টা করেছি এবং একটি চক্রের মধ্যে উভয় সংস্করণ চালিয়েছি; যদি আপনি উভয় বস্তু এবং অ্যারে প্রয়োজন (এই খুব কমই ঘটে পারবি? যদিও), json_decode+ + ঢালাই 45% উভয় স্বাদে চলমান চেয়ে দ্রুত json_decode। অন্যদিকে, উভয়ই এত দ্রুত যে আপনার আক্ষরিক সহস্র ডিকোডিংয়ের প্রয়োজন না হলে পার্থক্য নগণ্য।
এলসার্নি

4

json_decodeদ্বিতীয় আর্গুমেন্টকে সমর্থন করে, এটি সেট করা TRUEহলে এর Arrayপরিবর্তে একটি ফিরে আসবে stdClass Object। পরীক্ষা করে দেখুন ম্যানুয়াল পৃষ্ঠায় json_decodeসমস্ত সমর্থিত আর্গুমেন্ট এবং তার বিশদ বিবরণ দেখতে ফাংশন।

উদাহরণস্বরূপ এটি চেষ্টা করুন:

$json_string = 'http://www.example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, TRUE); // Set second argument as TRUE
print_r($obj['Result']); // Now this will works!

3
json_decode($data, true); // Returns data in array format 

json_decode($data); // Returns collections 

সুতরাং, যদি আপনার চেয়ে একটি অ্যারে চান তবে আপনি দ্বিতীয় আর্গুমেন্টটিকে json_decodeফাংশনে 'সত্য' হিসাবে পাস করতে পারেন ।


3

আমি আশা করি এটা তোমাকে সাহায্য করবে

$json_ps = '{"courseList":[  
            {"course":"1", "course_data1":"Computer Systems(Networks)"},  
            {"course":"2", "course_data2":"Audio and Music Technology"},  
            {"course":"3", "course_data3":"MBA Digital Marketing"}  
        ]}';

জসন ডিকোড ফাংশন ব্যবহার করুন

$json_pss = json_decode($json_ps, true);

পিএইচপি-তে JSON অ্যারের উপরে লুপিং

foreach($json_pss['courseList'] as $pss_json)
{

    echo '<br>' .$course_data1 = $pss_json['course_data1']; exit; 

}

ফলাফল : কম্পিউটার সিস্টেম (নেটওয়ার্ক)


2

পিএইচপি j jon_decode মধ্যে জেসন ডেটা পিএইচপি সম্পর্কিত অ্যারে রূপান্তর
জন্য প্রাক্তন:$php-array= json_decode($json-data, true); print_r($php-array);



2

এটির মতো চেষ্টা করুন:

$json_string = 'https://example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj->Result);
foreach($obj->Result as $value){
  echo $value->id; //change accordingly
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.