JSON එකක් සමඟ JavaScript හි උදාහරණයක්

අපට යම් ආකාරයකින් බාහිර ලෝකයෙන් නිෂ්පාදනයක් සමඟ JSON පැමිණිය හැකිය:

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

JSON නිවැරදි නොවේ නම්, JSON.parse ක්‍රමය ව්‍යතිරේකයක් උසිගන්වනු ඇතැයි ඔබ දැනටමත් දනී. අපි එම ව්‍යතිරේකය අල්ලා ගනිමු:

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 හි සාමාන්‍ය නිවැරදි බව පරීක්ෂා කරන්න, පසුව විග්‍රහ කිරීමෙන් පසු ප්‍රතිඵලය අරාවක් ද, වෙනත් යමක් නොවේ දැයි පරීක්ෂා කරන්න. ප්‍රතිඵලය අරාවක් නොවේ නම් - ව්‍යතිරේකයක් උසිගන්වන්න.