JavaScript-dä JSON bilen çäklemeleriň nusgasy

Bize daşary dünýäden nädire bir JSON önümi bilen geler diýeliň:

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

Siz bilýäňiz ýaly, usul JSON.parse, JSON nädogry bolsa, çäklemeleri atar. Geliň bu çäklemäni tutalyň:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // çäklemä nähili bolsa şeýle jogap berýäris
}

Şeýle-de bolup bilýär, JSON özi dogry, ýöne bize zerur meýdanlary ýok, mysal üçin, bahasy ýok:

javascriptlet json = '{"product": "apple", "amount": 5}'; // bahasy ýok

Geliň diýeliň, bu hem çäklemeli ýagdaýdy we şeýle ýagdaýda öz ulanyjy çäklemämizi atarys:

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: 'önümde baha ýa-da sany ýok'
    };
  }
} catch (error) {
  // çäklemä nähili bolsa şeýle jogap berýäris
}

Indi catch blogy iki görnüşli çäklemeleri alar: ýa JSON doly nädogry, şonda SyntaxError görnüşli çäklemeler bolar, ýa-da JSON dogry, ýöne bize zerur meýdanlar ýok, şonda bolsa ProductCostError görnüşli çäklemeler bolar.

Geliň catch blogynda bu çäklemeleriň görnüşlerini tutalyň:

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: 'önümde baha ýa-da sany ýok'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('Önümiň JSON-y nädogry');
  } else if (error.name == 'ProductCostError') {
    alert('Önümde baha ýa-da sany ýok');
  }
}
Задание 1

Size şuňa meňzeş JSON geler diýeliň:

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

Bu JSON-y düzümiň ýerine ýetirilmegi üçin umumy dogrulygyna barlaň, we düzümden soň, netijede massiw alnýandygyny, başga bir zadyň däldigini barlaň. Netijede massiw bolmasa - çäklemeleri atyň.