Мисоли истисно бо JSON дар JavaScript

Бигзор ба мо аз ҷаҳони берунӣ JSON бо маҳсул меояд:

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

Шумо аллакай медонед, ки усули JSON.parse истисно партофта мешавад, агар 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-ро барои дурустии умумӣ ҳангоми таҳлил тафтиш кунед, ва пас аз таҳлил тафтиш кунед, ки дар натиҷа массив ба даст меояд, на чизе дигар. Агар дар натиҷа массив наояд - истисно партофта шавад.