JavaScript တွင် JSON နှင့် ခြွင်းချက်ဥပမာ

ကျွန်ုပ်တို့ထံသို့ အပြင်လောကတစ်ခုခုမှ ထုတ်ကုန်တစ်ခုနှင့်အတူ JSON ရောက်လာသည်ဆိုပါစို့:

javascriptlet json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);

JSON.parse method သည် JSON မမှန်ကန်ပါက ခြွင်းချက်တစ်ခုကိုပစ်မည်ဆိုသည်ကို သင်သိပြီးဖြစ်သည်။ ထိုခြွင်းချက်ကို ဖမ်းကြည့်ကြပါစို့:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // ခြွင်းချက်ကို တစ်နည်းနည်းဖြင့် တုံ့ပြန်ပါ
}

သို့သော်၊ JSON ကိုယ်တိုင်က မှန်ကန်နေသော်လည်း ကျွန်ုပ်တို့လိုအပ်သောအကွက်များ မပါဝင်သည့်အခြေအနေမျိုးရှိနိုင်သည်၊ ဥပမာအားဖြင့်၊ စျေးနှုန်းအကွက်မရှိခြင်း:

javascriptlet json = '{"product": "apple", "amount": 5}'; // စျေးနှုန်းမရှိ

၎င်းသည်လည်း ခြွင်းချက်ကြုံရနိုင်သောအခြေအနေတစ်ခုဖြစ်သည်ဟု ဆိုကြပါစို့။ ထိုသို့သောအခြေအနေတွင် ကျွန်ုပ်တို့၏ ကိုယ်ပိုင်အသုံးပြုသူခြွင်းချက်ကို ပစ်မည်ဖြစ်သည်:

javascripttry {
  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 ဘလောက်အတွင်းတွင် ထိုခြွင်းချက်အမျိုးအစားများကို ဖမ်းယူကြပါစို့:

javascripttry {
  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('ထုတ်ကုန်တွင် စျေးနှုန်း သို့မဟုတ် အရေအတွက် မရှိပါ');
  }
}
Задание 1

သင့်ထံသို့ ဤကဲ့သို့ပုံစံရှိသော JSON ရောက်လာသည်ဆိုပါစို့:

javascriptlet json = `[
  {
    "name": "user1",
    "age": 25,
    "salary": 1000
  },
  {
    "name": "user2",
    "age": 26,
    "salary": 2000
  },
  {
    "name": "user3",
    "age": 27,
    "salary": 3000
  }
]`;

ခွဲခြမ်းစိတ်ဖြာသည့်အခါ ဤ JSON ၏ယေဘုယျမှန်ကန်မှုကို စစ်ဆေးပါ။ ခွဲခြမ်းစိတ်ဖြာပြီးနောက် ရလဒ်အဖြစ် array တစ်ခုရရှိကြောင်း၊ အခြားအရာတစ်ခုမဟုတ်ကြောင်း စစ်ဆေးပါ။ ရလဒ်အဖြစ် array မဟုတ်ပါက - ခြွင်းချက်တစ်ခုကို ပစ်ပါ။