ইন্ট্রো
প্রথমে আপনার একটি স্ট্রিং আছে। জেএসএন কোনও অ্যারে, কোনও বস্তু বা কোনও ডেটা স্ট্রাকচার নয়। জেএসএন একটি পাঠ্য-ভিত্তিক সিরিয়ালাইজেশন ফর্ম্যাট - তাই অভিনব স্ট্রিং, তবে এখনও একটি স্ট্রিং। পিএইচপি ব্যবহার করে এটি ডিকোড করুন json_decode()
।
$data = json_decode($json);
সেখানে আপনি খুঁজে পেতে পারেন:
এগুলি JSON এ এনকোড করা যায়। বা আরও সঠিকভাবে, এগুলি হল JSON এ এনকোড করা যায় এমন জিনিসগুলির পিএইচপি'র সংস্করণ।
তাদের সম্পর্কে বিশেষ কিছু নেই। এগুলি "JSON অবজেক্টস" বা "জেএসএন অ্যারে" নয়। আপনি জেএসওনকে ডিকোড করেছেন - আপনার এখন প্রতিদিনের বেসিক পিএইচপি টাইপ রয়েছে ।
অবজেক্টস হবে স্টডি ক্লাসের উদাহরণ , একটি বিল্ট-ইন ক্লাস যা কেবল একটি জেনেরিক জিনিস যা এখানে গুরুত্বপূর্ণ নয়।
অবজেক্টের বৈশিষ্ট্য অ্যাক্সেস করা হচ্ছে
আপনি অন্য যে কোনও অবজেক্টের সার্বজনীন অ স্থিত বৈশিষ্ট্যগুলির জন্য যেমনভাবে এই বিষয়গুলির একটির বৈশিষ্ট্য অ্যাক্সেস করেন $object->property
।
$json = '
{
"type": "donut",
"name": "Cake"
}';
$yummy = json_decode($json);
echo $yummy->type; //donut
অ্যারে উপাদানগুলিতে অ্যাক্সেস করা হচ্ছে
আপনি এই অ্যারেগুলির একটিতে যেমন অ্যাক্সেস করেন ঠিক তেমনভাবে আপনি অন্য কোনও অ্যারে যেমন করেন $array[0]
।
$json = '
[
"Glazed",
"Chocolate with Sprinkles",
"Maple"
]';
$toppings = json_decode($json);
echo $toppings[1]; //Chocolate with Sprinkles
এটি দিয়ে ইটারেট করুন foreach
।
foreach ($toppings as $topping) {
echo $topping, "\n";
}
স্প্রিংলস
ম্যাপেলের
সাথে গ্লোজড চকোলেট
বা যে কোনও বাজিলিয়ন অন্তর্নির্মিত অ্যারে ফাংশন সম্পর্কে গণ্ডগোল ।
নেস্টেড আইটেম অ্যাক্সেস করা
অবজেক্টের বৈশিষ্ট্য এবং অ্যারের উপাদানগুলি আরও বেশি অবজেক্ট এবং / অথবা অ্যারে হতে পারে - আপনি কেবল তাদের বৈশিষ্ট্য এবং সদস্যদের যথারীতি অ্যাক্সেস করতে চালিয়ে যেতে পারেন, যেমন $object->array[0]->etc
।
$json = '
{
"type": "donut",
"name": "Cake",
"toppings": [
{ "id": "5002", "type": "Glazed" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5004", "type": "Maple" }
]
}';
$yummy = json_decode($json);
echo $yummy->toppings[2]->id; //5004
Json_decode ()true
এ দ্বিতীয় আর্গুমেন্ট হিসাবে উত্তীর্ণ
আপনি যখন এটি করেন, বস্তুর পরিবর্তে আপনি সম্মিলিত অ্যারে পাবেন - কীগুলির জন্য স্ট্রিং সহ অ্যারেগুলি। আবার আপনি যথারীতি এর উপাদানগুলিতে অ্যাক্সেস করেন $array['key']
।
$json = '
{
"type": "donut",
"name": "Cake",
"toppings": [
{ "id": "5002", "type": "Glazed" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5004", "type": "Maple" }
]
}';
$yummy = json_decode($json, true);
echo $yummy['toppings'][2]['type']; //Maple
সহযোগী অ্যারে আইটেম অ্যাক্সেস করা
কোনও এসোসিয়েটিভ পিএইচপি অ্যারেতে কোনও JSON অবজেক্টটি ডিকোড করার সময়, আপনি foreach (array_expression as $key => $value)
বাক্য গঠন এবং বাক্য দুটিই বাক্য গঠন ব্যবহার করতে পারেন , উদাহরণস্বরূপ
$json = '
{
"foo": "foo value",
"bar": "bar value",
"baz": "baz value"
}';
$assoc = json_decode($json, true);
foreach ($assoc as $key => $value) {
echo "The value of key '$key' is '$value'", PHP_EOL;
}
ছাপে
কী 'ফু'র মান হ'ল' ফু মান '
কী' বার 'এর মান' বার মান '
কী' বাজ 'এর মান' বাজ মান '
কীভাবে ডেটা কাঠামোবদ্ধ তা জানেন না
আপনি JSON থেকে যা পান তা ডকুমেন্টেশনটি পড়ুন।
জেএসএন-এর দিকে তাকান - যেখানে আপনি কোঁকড়ানো বন্ধনীগুলি {}
কোনও বস্তুর প্রত্যাশা করেন, যেখানে আপনি বর্গাকার বন্ধনীগুলি দেখেন[]
একটি অ্যারের আশা করে।
একটি দিয়ে ডিকোড করা ডেটা হিট করুন print_r()
:
$json = '
{
"type": "donut",
"name": "Cake",
"toppings": [
{ "id": "5002", "type": "Glazed" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5004", "type": "Maple" }
]
}';
$yummy = json_decode($json);
print_r($yummy);
এবং আউটপুট পরীক্ষা করুন:
stdClass Object
(
[type] => donut
[name] => Cake
[toppings] => Array
(
[0] => stdClass Object
(
[id] => 5002
[type] => Glazed
)
[1] => stdClass Object
(
[id] => 5006
[type] => Chocolate with Sprinkles
)
[2] => stdClass Object
(
[id] => 5004
[type] => Maple
)
)
)
এটি আপনাকে জানিয়ে দেবে কোথায় আপনার বস্তু আছে, কোথায় অ্যারে রয়েছে তাদের সদস্যদের নাম এবং মান সহ।
আপনি যদি হারিয়ে যাওয়ার আগে কেবলমাত্র এটির মধ্যে প্রবেশ করতে পারেন - তবে অনেক দূরে যান এবং এটি দিয়ে আঘাত করুন print_r()
:
print_r($yummy->toppings[0]);
stdClass Object
(
[id] => 5002
[type] => Glazed
)
এই হ্যান্ডি ইন্টারেক্টিভ জেএসএন এক্সপ্লোরারটিতে এটি একবার দেখুন ।
সমস্যাটি এমন টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো হয়ে যা আপনার মাথাটি চারপাশে মোড়ানো সহজ।
json_decode()
আয় null
এটি হয় কারণ:
- জেএসএন সম্পূর্ণরূপে ঠিক এটি নিয়ে গঠিত
null
,।
- JSON অবৈধ - ফলাফলটি যাচাই করুন
json_last_error_msg
বা এটি JSONLint এর মতো কিছুতে রেখে দিন ।
- এটিতে 512 স্তরেরও বেশি গভীর নীচে থাকা উপাদান রয়েছে। এই ডিফল্ট সর্বাধিক গভীরতা তৃতীয় আর্গুমেন্ট হিসাবে পূর্ণসংখ্যা পাস করে ওভাররাইড করা যেতে পারে
json_decode()
।
আপনার যদি সর্বোচ্চ গভীরতা পরিবর্তন করতে হয় তবে আপনি সম্ভবত ভুল সমস্যাটি সমাধান করছেন। আপনি কেন এত গভীরভাবে নেস্টেড ডেটা পেয়েছেন তা খুঁজে বার করুন (যেমন আপনি যে সার্ভিসটি জিজ্ঞাসা করছেন যা জেএসওন তৈরি করছে তার একটি বাগ রয়েছে) এবং তা না ঘটে তা পান।
অবজেক্ট প্রোপার্টি নামটিতে একটি বিশেষ অক্ষর রয়েছে
কখনও কখনও আপনার একটি অবজেক্ট প্রোপার্টি নাম থাকবে যা হাইফেনের মতো কিছু -
বা সাইন এ রয়েছে @
যা আক্ষরিক শনাক্তকারী হিসাবে ব্যবহার করা যায় না। পরিবর্তে আপনি এটি সম্বোধন করতে কোঁকড়া ধনুর্বন্ধনী মধ্যে একটি স্ট্রিং আক্ষরিক ব্যবহার করতে পারেন।
$json = '{"@attributes":{"answer":42}}';
$thing = json_decode($json);
echo $thing->{'@attributes'}->answer; //42
আপনার যদি সম্পত্তি হিসাবে কোনও পূর্ণসংখ্যা থাকে দেখুন: পূর্ণসংখ্যার মতো নামের সাথে কীভাবে অবজেক্টের বৈশিষ্ট্য অ্যাক্সেস করবেন? রেফারেন্স হিসেবে.
কেউ আপনার JSON এ JSON রাখে
এটি হাস্যকর তবে এটি ঘটে - আপনার JSON এর মধ্যে স্ট্রিং হিসাবে জেএসএন এনকোডেড রয়েছে। ডিকোড, অ্যাক্সেস স্বাভাবিক হিসাবে স্ট্রিং, ডিকোড যে , এবং শেষ পর্যন্ত আপনার যা প্রয়োজন পেতে।
$json = '
{
"type": "donut",
"name": "Cake",
"toppings": "[{ \"type\": \"Glazed\" }, { \"type\": \"Maple\" }]"
}';
$yummy = json_decode($json);
$toppings = json_decode($yummy->toppings);
echo $toppings[0]->type; //Glazed
ডেটা মেমরির সাথে খাপ খায় না
যদি আপনার JSON json_decode()
একবারে পরিচালনা করার জন্য খুব বড় হয় তবে জিনিসগুলি জটিল হয়ে উঠতে শুরু করে। দেখা:
কিভাবে এটি বাছাই
দেখুন: তথ্যসূত্র: পিএইচপি-তে অ্যারে এবং ডেটা বাছাই করার সমস্ত প্রাথমিক উপায় ।