অ্যারে যাও 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.