Пример искључења са JSON-ом у JavaScript-у

Нека нам из спољашњег света дође JSON са производом:

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

Већ знате да ће метод JSON.parse бацити изузетак (exception) ако је 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 на општу исправност при парсирању, а након парсирања проверите да ли у резултату добијате низ, а не нешто друго. Ако у резултату добијете не низ - баците изузетак.