⊗jsSpExcJSE 149 of 294 menu

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

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

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

Шумо аллакай медонед, ки усули JSON.parse истисно партофта мешавад, агар JSON нодуруст бошад. Биёед ин истисноро бигирем:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // ба истисно чӣ гуна амал мекунем }

Аммо, шояд чунин бошад, ки худи JSON дуруст аст, вале майдонҳои зарурӣ надорад, масалан, майдони нарх вуҷуд надорад:

let json = '{"product": "apple", "amount": 5}'; // нарх нест

Бигзем, ки ин ҳам ҳолати истисно аст ва дар ин ҳолат истиснои истифодабарандаи худро партофта мешавем:

try { 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 биёед ин намудҳои истисноҳоро бигирем:

try { 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('Маҳсул нарх ё миқдор надорад'); } }

Бигзор ба шумо JSON-и чунин намуд меояд:

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

Ин JSON-ро барои дурустии умумӣ ҳангоми таҳлил тафтиш кунед, ва пас аз таҳлил тафтиш кунед, ки дар натиҷа массив ба даст меояд, на чизе дигар. Агар дар натиҷа массив наояд - истисно партофта шавад.

Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан