فهرست مطالب
وقتی میخواهید اطلاعاتی مثل مشخصات کاربر یا فهرست محصولات را بین سرور و مرورگر جابهجا کنید، دو برنامه ممکن است با زبانهای متفاوتی مثل پایتون و جاوااسکریپت نوشته شده باشند. حافظه داخلی این سیستمها دادهها را یکسان نگهداری نمیکند. در نتیجه به فرمتی متنی، خوانا و مستقل از بستر نیاز دارید که همه زبانها بدون خطا آن را بسازند و بخوانند. قالب JSON دقیقاً همین وظیفه را بر عهده دارد.
عبارت JSON مخفف JavaScript Object Notation است. با وجود اینکه ریشه نگارش آن به جاوااسکریپت بازمیگردد، به هیچ زبان خاصی وابسته نیست و اکنون استاندارد اصلی انتقال اطلاعات در وب، APIها و فایلهای پیکربندی به شمار میآید.
ساختار JSON و استانداردهای رسمی آن
طبق مستندات رسمی وب (MDN)، ساختار JSON شباهت زیادی به تعریف مستقیم اشیا در جاوااسکریپت دارد، اما قوانین سختگیرانهتری بر آن حاکم است. فایلهای حاوی این دادهها با پسوند json. ذخیره میشوند و نوع رسانهای (MIME type) آنها application/json است.
این فرمت فقط دادههای قابل تبدیل به متن ساده را میپذیرد. انواع دادههای مجاز عبارتند از:
- رشتههای متنی (String) که حتماً باید داخل گیومه دوتایی انگلیسی قرار بگیرند
- اعداد (Number) در فرمت دهدهی
- مقادیر منطقی (true یا false)
- مقدار تهی (null)
- اشیا (Object) که به شکل کلید و مقدار تعریف میشوند
- آرایهها (Array) که فهرستی از مقادیر مجاز را نگهداری میکنند
دادههایی مانند توابع، متدها، تاریخها، مقادیر undefined یا مقادیر ریاضی مثل NaN در متن JSON مجاز نیستند و قرار دادن آنها متن را نامعتبر میکند.
تبدیل داده متنی به شیء و برعکس
برای انتقال داده در شبکه، اطلاعات باید به رشته متنی تبدیل شوند (فرآیند Serialization). هنگامی که این متن به مقصد میرسد، باید دوباره به ساختار داده بومی زبان مقصد تبدیل شود (فرآیند Deserialization). در جاوااسکریپت دو متد سراسری برای این تبدیل وجود دارد: JSON.parse و JSON.stringify.
به مثال زیر توجه کنید که چگونه اطلاعات خام یک کاربر را پردازش میکنیم:
javascript// متن دریافتی از سرور با فرمت استاندارد
const jsonString = '{"name": "سارا", "age": ۲۸, "skills": ["HTML", "CSS"]}';
// تبدیل متن به شیء جاوااسکریپت
const user = JSON.parse(jsonString);
// دسترسی به دادهها با نشانهگذاری نقطه و اندیس
console.log(user.name);
console.log(user.skills[۰]);
// افزودن داده و تبدیل دوباره به رشته برای ارسال
user.isActive = true;
const updatedJson = JSON.stringify(user);
console.log(updatedJson);
خروجی اجرای این کد به صورت زیر است:
textسارا
HTML
{"name":"سارا","age":۲۸,"skills":["HTML","CSS"],"isActive":true}
متد JSON.parse متن را میگیرد و آن را به یک شیء معمولی جاوااسکریپت تبدیل میکند. پس از تبدیل، دسترسی به مشخصهها دقیقاً مانند هر شیء دیگری با علامت نقطه یا براکت انجام میشود.
اشتباههای رایج هنگام نوشتن و اعتبارسنجی JSON
رعایت نکردن چند قانون کوچک معمولاً باعث بروز خطای SyntaxError هنگام پارس کردن دادهها میشود:
۱. استفاده از گیومه تکی: تمام کلیدها و مقادیر رشتهای باید درون گیومه دوتایی (") باشند. نوشتن مقادیر با (') متن را نامعتبر میکند.
۲. گذاشتن ویرگول اضافی (Trailing Comma): در جاوااسکریپت مدرن میتوانید بعد از آخرین ویژگی یک شیء ویرگول بگذارید، اما در JSON وجود ویرگول بعد از آخرین آیتم خطا است.
۳. نوشتن کامنت: در فایلهای JSON استاندارد امکان درج کامنت (با // یا /* */) وجود ندارد و مفسر بلافاصله خطا میدهد.
۴. فراموش کردن گیومه دور نام کلیدها: در جاوااسکریپت میتوانید کلید شیء را بدون گیومه بنویسید، اما در JSON نام تمام کلیدها باید حتماً رشته باشند.
قدم بعدی برای تسلط بر تبادل داده در وب
شناخت ساختار JSON اولین گام برای تعامل با سرورها و ابزارهای تحت وب است. پس از تسلط بر نحوه خواندن و نوشتن این قالب، گام منطقی بعدی یادگیری ارسال درخواستهای شبکه با متدهایی مانند fetch و مدیریت پاسخهای ناهمگام است. اگر قصد دارید این مسیر را به صورت کاربردی و گامبهگام در محیط کدنویسی مرور کنید، دوره جاوااسکریپت از صفر تا برنامهنویس بستری مناسب برای تسلط بر این ابزارها فراهم کرده است.




نظرها
اولین نفری باشید که نظر میدهدسؤالتان را بپرسید یا تجربهتان را بنویسید تا نویسندهی مطلب پاسخ بدهد.