۲۵ اشتباه JSON که هر برنامه‌نویسی مرتکب می‌شود

JSON ستون فقرات ارتباطات وب است. سبک است و خواندن آن آسان است. با این حال، قوانین آن سخت‌گیرانه هستند. خطاهای کوچک باعث از کار افتادن کد شما می‌شوند.

برای نوشتن ساختارهای داده بهتر، از این اشتباهات رایج دوری کنید.

خطاهای سینتکس

  • فقط از کوتیشن دوگانه (double quotes) استفاده کنید. کوتیشن تک (single quotes) در JavaScript کار می‌کند اما در JSON با خطا مواجه می‌شود.
  • کاماهای انتهایی را حذف کنید. وجود کاما بعد از آخرین آیتم باعث کرش کردن برنامه می‌شود.
  • کاماهای فراموش‌شده را اضافه کنید. بین هر جفت کلید-مقدار باید یک کاما وجود داشته باشد.
  • تمام کلیدها را داخل کوتیشن قرار دهید. هر کلید باید داخل کوتیشن دوگانه باشد.
  • براکت‌ها را درست استفاده کنید. در جایی که باید از براکت مربعی استفاده شود، از آکولاد استفاده نکنید.

اشتباهات در انواع داده (Data Type)

  • مقادیر undefined را مدیریت کنید. JSON از undefined پشتیبانی نمی‌کند. به جای آن از null استفاده کنید.
  • از NaN و Infinity خودداری کنید. این مقادیر در طول سریال‌سازی (serialization) به null تبدیل می‌شوند.
  • فرمت‌های Date را به خاطر بسپارید. JSON با تاریخ‌ها مانند رشته (string) برخورد می‌کند. شما باید آن‌ها را دوباره به اشیاء Date تبدیل (parse) کنید.
  • از اعداد پایه ۱۰ استفاده کنید. از فرمت‌های hex یا octal استفاده نکنید.
  • تابع (function) ذخیره نکنید. JSON فقط برای داده‌های ایستا (static) است.
  • از کامنت استفاده نکنید. JSON اجازه استفاده از کامنت‌های // یا /* */ را نمی‌دهد.
  • کوتیشن‌های دوگانه را Escape کنید. برای قرار دادن کوتیشن داخل یک رشته، از بک‌اسلش استفاده کنید.
  • از \n برای خط‌های جدید استفاده کنید. نمی‌توانید داخل یک مقدار رشته‌ای، کلید Enter را بزنید.
  • بک‌اسلش‌ها را Escape کنید. برای مسیرها یا الگوهای regex از \ استفاده کنید.

خطاهای محیطی و منطقی

  • ورودی خود را چک کنید. یک شیء (object) را به JSON.parse() پاس ندهید.
  • به حروف کوچک و بزرگ دقت کنید. "userId" و "userid" کلیدهای متفاوتی هستند.
  • به ترتیب تکیه نکنید. JSON ترتیب کلیدها را تضمین نمی‌کند.
  • هرگز از eval() استفاده نکنید. برای جلوگیری از ریسک‌های امنیتی از JSON.parse() استفاده کنید.
  • از اعداد بزرگ محافظت کنید. برای جلوگیری از از دست رفتن دقت (precision loss)، شناسه‌های ۶۴ بیتی را به صورت رشته (string) ارسال کنید.
  • از بلوک‌های try...catch استفاده کنید. اگر خطاها را مدیریت نکنید، یک JSON نامعتبر باعث کرش کردن برنامه شما می‌شود.
  • مراجع حلقوی (circular references) را اصلاح کنید. شما نمی‌توانید شیئی را که به خودش اشاره می‌کند، به رشته تبدیل (stringify) کنید.
  • تفاوت را بدانید. JSON محدودیت‌های بیشتری نسبت به یک شیء استاندارد JavaScript دارد.
  • از رشته‌های خالی خودداری کنید. به جای "" از {} یا [] استفاده کنید.

چگونه ایمن بمانیم:

  • از یک ابزار اعتبارسنجی (validator) برای چک کردن سینتکس خود استفاده کنید.
  • از Prettier در ویرایشگر خود برای فرمت‌بندی خودکار فایل‌ها استفاده کنید.
  • همیشه منطق پارس کردن (parsing) را در یک بلوک try...catch قرار دهید.

منبع: https://dev.to/jsdevspace/25-json-mistakes-every-developer-makes-36e6