JavaScript တွင် JSON နှင့် ခြွင်းချက်ဥပမာ
ကျွန်ုပ်တို့ထံသို့ အပြင်လောကတစ်ခုခုမှ ထုတ်ကုန်တစ်ခုနှင့်အတူ JSON ရောက်လာသည်ဆိုပါစို့:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
JSON.parse method သည် JSON မမှန်ကန်ပါက
ခြွင်းချက်တစ်ခုကိုပစ်မည်ဆိုသည်ကို သင်သိပြီးဖြစ်သည်။
ထိုခြွင်းချက်ကို ဖမ်းကြည့်ကြပါစို့:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// ခြွင်းချက်ကို တစ်နည်းနည်းဖြင့် တုံ့ပြန်ပါ
}
သို့သော်၊ JSON ကိုယ်တိုင်က မှန်ကန်နေသော်လည်း ကျွန်ုပ်တို့လိုအပ်သောအကွက်များ မပါဝင်သည့်အခြေအနေမျိုးရှိနိုင်သည်၊ ဥပမာအားဖြင့်၊ စျေးနှုန်းအကွက်မရှိခြင်း:
let json = '{"product": "apple", "amount": 5}'; // စျေးနှုန်းမရှိ
၎င်းသည်လည်း ခြွင်းချက်ကြုံရနိုင်သောအခြေအနေတစ်ခုဖြစ်သည်ဟု ဆိုကြပါစို့။ ထိုသို့သောအခြေအနေတွင် ကျွန်ုပ်တို့၏ ကိုယ်ပိုင်အသုံးပြုသူခြွင်းချက်ကို ပစ်မည်ဖြစ်သည်:
try {
let json = '{"product": "apple", "amount": 5}';
let product = JSON.parse(json);
if (product.price !== undefined && product.amount !== undefined) {
alert(product.price * product.amount);
} else {
throw {
name: 'ProductCostError',
message: 'ထုတ်ကုန်တွင် စျေးနှုန်း သို့မဟုတ် အရေအတွက် မရှိပါ'
};
}
} catch (error) {
// ခြွင်းချက်ကို တစ်နည်းနည်းဖြင့် တုံ့ပြန်ပါ
}
ယခုအခါ catch ဘလောက်သည် ခြွင်းချက်အမျိုးအစားနှစ်မျိုးရရှိမည်:
JSON သည်လုံးဝမမှန်ကန်ပါက၊
SyntaxError အမျိုးအစားခြွင်းချက်ဖြစ်မည်။
သို့မဟုတ် JSON သည်မှန်ကန်သော်လည်း ကျွန်ုပ်တို့လိုအပ်သောအကွက်များမပါဝင်ပါက၊
ProductCostError အမျိုးအစားခြွင်းချက်ဖြစ်မည်။
catch ဘလောက်အတွင်းတွင် ထိုခြွင်းချက်အမျိုးအစားများကို ဖမ်းယူကြပါစို့:
try {
let json = '{"product": "apple", "amount": 5}';
let product = JSON.parse(json);
if (product.price !== undefined && product.amount !== undefined) {
alert(product.price * product.amount);
} else {
throw {
name: 'ProductCostError',
message: 'ထုတ်ကုန်တွင် စျေးနှုန်း သို့မဟုတ် အရေအတွက် မရှိပါ'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('မမှန်ကန်သော ထုတ်ကုန် JSON');
} else if (error.name == 'ProductCostError') {
alert('ထုတ်ကုန်တွင် စျေးနှုန်း သို့မဟုတ် အရေအတွက် မရှိပါ');
}
}
သင့်ထံသို့ ဤကဲ့သို့ပုံစံရှိသော JSON ရောက်လာသည်ဆိုပါစို့:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
ခွဲခြမ်းစိတ်ဖြာသည့်အခါ ဤ JSON ၏ယေဘုယျမှန်ကန်မှုကို စစ်ဆေးပါ။ ခွဲခြမ်းစိတ်ဖြာပြီးနောက် ရလဒ်အဖြစ် array တစ်ခုရရှိကြောင်း၊ အခြားအရာတစ်ခုမဟုတ်ကြောင်း စစ်ဆေးပါ။ ရလဒ်အဖြစ် array မဟုတ်ပါက - ခြွင်းချက်တစ်ခုကို ပစ်ပါ။