حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

مدیریت JSON.parse در جاوااسکریپت؛ try و catch برای تنظیمات

داده ناقص و اعتبارسنجی امن در جاوااسکریپت · 0٪

✍️ متن JSON معتبر می‌تونه به شیء، آرایه، عدد یا حتی null تبدیل بشه. پس دو سؤال داریم: آیا متن قابل تجزیه است و آیا نتیجه شکل مورد نظر برنامه را دارد؟ JSON.parse برای متن خراب خطا ایجاد می‌کنه؛ با try/catch می‌تونیم به جای متوقف شدن کل برنامه، یک نتیجه جایگزین روشن برگردونیم.

مثلاً متن '{"theme":"dark"}' یک شیء تنظیمات می‌ده، اما '[1,2]' با این‌که JSON معتبره، تنظیمات شیئی این تمرین نیست. null هم نوع ویژه‌ای دارد: عبارت typeof null برابر 'object' است، بنابراین بررسی typeof به‌تنهایی کافی نیست. آرایه را هم باید جدا با Array.isArray تشخیص بدیم.

در تمرین، برای هر ورودی نامناسب یک شیء خالی برگردون. لازم نیست خطا را چاپ کنی یا مقدار ورودی را حدس بزنی. خطای رایج، قرار دادن فقط بخش return در try یا نداشتن بررسی شکل نتیجه است؛ هم خود parse و هم استفاده از نتیجه باید با قرارداد هماهنگ باشند. تنظیمات دارای مقدار صفر یا false معتبرند و باید بدون تغییر حفظ شوند.

فعالیت شما

parseSettings(text) را اصلاح کن. text رشته است. اگر JSON معتبر و نتیجه شیء غیرnull و غیرآرایه بود، همان نتیجه را برگردان. برای متن خراب، null، آرایه و مقدار اولیه مانند عدد یا رشته، {} بده؛ '{"count":0}' => {count:0} و 'خراب' => {}.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

function parseSettings(text) {
  // TODO: parse را داخل try/catch بگذار و شکل نتیجه را بررسی کن.
}