JSONS_Decode function ၏အခြေခံပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
$data = json_decode($jsonString, true);
ပထမ ဦး ဆုံး parameter သည် JSON string ကိုဖြစ်ပါတယ်။
ဒုတိယ parameter သည် မှန်သော အခါရလဒ်ကိုအပေါင်းအသင်းဆိုင်ရာခင်းကျင်းမှုတစ်ခုအဖြစ်ခွဲထားလိမ့်မည်။ ချန်လှပ်သို့မဟုတ်မှားယွင်းသောသို့မဟုတ် မှားလျှင် , အရာဝတ်ထုပြန်လာလိမ့်မည်။
ကျွန်ုပ်တို့တွင် Multidimensional Json Data အောက်တွင်ရှိသည်ဆိုပါစို့။
{
"user": {
"name": "Alice",
"contacts": [
{"type": "email", "value": "[email protected]"},
{"type": "phone", "value": "123456789"}
]
}
}
ခွဲခြမ်းစိတ်ဖြာကုဒ်:
$json = '{"user":{"name":"Alice","contacts":[{"type":"email","value":"[email protected]"},{"type":"phone","value":"123456789"}]}}';
$data = json_decode($json, true);
ဤအချက်မှာ ဒေါ်လာဒေတာ သည် multies-datevice associative array ဖြစ်သည်။ developer များစွာကြုံတွေ့ရသောပြ problems နာများမှာ -
JSON Parsing အောင်မြင်မှုရှိမရှိမှန်ကန်စွာဆုံးဖြတ်ခြင်းမပြုပါ 0 င်လာသည့် JSON ၏ပုံစံသည်မမှန်ကန်ပါက JSON_DECode သည် Null သည် Null ကိုပြန်လည်ရောက်ရှိလိမ့်မည်။ JSONS_LAST_ERRORERRORD ကို အသုံးပြု. ဆုံးဖြတ်ရန်လိုအပ်သည်။
obfuscated အရာဝတ်ထုနှင့် Array Access method <br> JSON_DECode ၏ဒုတိယ pareter သည်မှားယွင်းသော (ပုံမှန်) သည် မှား သည် (ပုံမှန်) သည်ပြန်ရောက်ပြီးအရာဝတ်ထုကိုပြန်ပို့ပြီး -> Access attribute လိုအပ်သည်။ အကယ်. မှန်ကန်ပါက ခင်းကျင်းမှုကိုပြန်လည်ပေးပို့ပြီး [] လက်လှမ်းမီရန်လိုအပ်သည်။
Multidimensional Array များကိုအဆင့်မြှင့်တင်ခြင်းကိုမစဉ်းစားပါ $ ဒေတာ ['user'] ရေးသားခြင်းသည် Multidimensional Array ကိုကြည့်သောအခါ ဒေါ်လာဒေတာ ['user) သည်အရာဝတ်ထုမဟုတ်သောကြောင့်အမှားတစ်ခုဖြစ်လိမ့်မည်။
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "JSON အမှားခွဲခြမ်းစိတ်ဖြာခြင်း:" . json_last_error_msg();
exit;
}
ဤအဆင့်သည်နောက်ဆက်တွဲအပြောင်းအလဲတင်ခြင်းအမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။
// အမှားသရုပ်ပြ(ဒုတိယ parameter သည်ဖြစ်ပါတယ်true,ရလဒ်တစ်ခုခင်းကျင်းဖြစ်ပါတယ်,____ သည်အလုပ်မလုပ်ပါ ->)
echo $data['user']->name; // အမှားတစ်ခုသတင်းပို့ပါလိမ့်မယ်
// မှန်ကန်သောသရုပ်ပြ
echo $data['user']['name']; // ထုတ်လုပ်ခြင်း Alice
ကျနော်တို့ အဆက်အသွယ်များ ကျော်လွှားချင်တယ်ဆိုပါစို့:
foreach ($data['user']['contacts'] as $contact) {
echo $contact['type'] . ": " . $contact['value'] . "\n";
}
ဂျွန်ဆန်သည်ရှုပ်ထွေးသောအဆောက်အအုံများနှင့်မဝေးသောအလွှာများနှင့်ပါ 0 င်သောအတွက် recursive parsing လိုအပ်နိုင်ပါသည်။ ဥပမာ -
function printJson($data, $indent = 0) {
if (is_array($data)) {
foreach ($data as $key => $value) {
echo str_repeat(" ", $indent) . $key . ": ";
if (is_array($value)) {
echo "\n";
printJson($value, $indent + 1);
} else {
echo $value . "\n";
}
}
}
}
printJson($data);
ဤကုဒ်သည် multidimensional array ၏အဆင့်ဆင့်နှင့်အဓိကတန်ဖိုးများကိုရှင်းလင်းစွာထုတ်ဖော်ပြောဆိုသည်။
Multidimensional JSONS ကို JSONS_Decode ကို သုံး. ခွဲခြမ်းစိတ်ဖြာခြင်းသည်အောင်မြင်မှုရှိ ,
ရှင်းရှင်းလင်းလင်းထုတ်ဖော်ပြောဆိုဒုတိယ parameter ကိုသတ်မှတ်ခြင်း, အရာဝတ်ထုတစ်ခုသို့မဟုတ်ခင်းကျင်းမှုကိုပြန်ပေးရန်ဆုံးဖြတ်ခြင်းရှိမရှိဆုံးဖြတ်ပါ။
ရှုထောင့်အမျိုးမျိုးသို့မဟုတ်အရာဝတ်ထုများအတွက်, access levels များအတွက် access ကို အဆင့် ဆင့်တိကျစွာနှင့်ရောနှောခြင်းမှရှောင်ရှားရန်ရှောင်ကြဉ်ပါ ။
လိုအပ်သည့်အခါရှုပ်ထွေးသော multidimensional ဖွဲ့စည်းတည်ဆောက်ပုံများကိုကိုင်တွယ်ရန် recursive functions များကိုအသုံးပြုပါ။
အထက်ပါအချက်များကိုသင်ကျွမ်းကျင်နေသမျှကာလပတ်လုံးသင်တုန့်ရောသော JSONS ဒေတာများကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ပိုမိုကောင်းမွန်သော PHP code ကိုရေးသည့်အခါ JSON_Decode ၏ထောင်ချောက်များကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။