JSON فرمت اصلی تبادل داده برای برنامه های کاربردی وب و موارد دیگر است. در اینجا آنچه شما باید در مورد علامت گذاری شی جاوا اسکریپ بدانید آمده است.
- کمی از تاریخ
- چرا توسعه دهندگان از JSON استفاده می کنند
- نحوه عملکرد JSON
- JSON در مقابل XML
- JSON در مقابل YAML و CSV
- JSON پیچیده: تودرتو، اشیا و آرایهها
- تجزیه و تولید JSON
- شما JSON و قالبکننده JSON
- استفاده از JSON با TypeScript
- نتیجهگیری
JSON یا علامت گذاری شی جاوا اسکریپت، قالبی است که برای نمایش داده ها استفاده می شود. در اوایل دهه ۲۰۰۰ به عنوان بخشی از جاوا اسکریپت معرفی شد و به تدریج گسترش یافت تا به رایج ترین رسانه برای توصیف و تبادل داده های مبتنی بر متن تبدیل شود. امروزه JSON استاندارد جهانی تبادل داده است. در هر زمینه ای از برنامه نویسی، از جمله توسعه فرانت اند و سمت سرور، سیستم ها، میان افزارها و پایگاه های داده یافت می شود.
این مقاله شما را با JSON آشنا می کند. شما یک نمای کلی از فناوری دریافت خواهید کرد، نحوه مقایسه آن با استانداردهای مشابه مانند XML، YAML، و CSV را خواهید یافت، و نمونه هایی از JSON را در انواع برنامه ها و موارد استفاده مشاهده خواهید کرد.
کمی از تاریخ
JSON در ابتدا به عنوان قالبی برای برقراری ارتباط بین کلاینتهای جاوا اسکریپت و سرورهای بکاند توسعه داده شد. به سرعت به عنوان یک قالب قابل خواندن برای انسان که برنامه نویسان جلویی می توانستند برای برقراری ارتباط با صفحه پشتی با استفاده از قالبی مختصر و استاندارد استفاده کنند، محبوبیت پیدا کرد. توسعه دهندگان همچنین دریافتند که JSON بسیار انعطاف پذیر است: می توانید فیلدها را به صورت موقت اضافه، حذف و به روز کنید. (این انعطاف پذیری به قیمت ایمنی تمام شد که بعداً با طرح JSON مورد بررسی قرار گرفت.)
در یک نوبت عجیب، JSON با انقلاب AJAX رایج شد. عجیب است، با توجه به تاکید بر XML، اما این JSON بود که باعث درخشش AJAX شد. استفاده از REST بهعنوان قرارداد برای APIها و JSON بهعنوان رسانهای برای تبادل، ترکیبی قوی برای ایجاد تعادل در سادگی، انعطافپذیری و ثبات است.
بعد، JSON از جاوا اسکریپت جلویی به ارتباط کلاینت-سرور و از آنجا به فایلهای پیکربندی سیستم، زبانهای بکاند و تا پایگاههای داده گسترش یافت. JSON حتی به حرکت NoSQL کمک کرد که ذخیرهسازی دادهها را متحول کرد. مشخص شد که مدیران پایگاه داده نیز از انعطاف پذیری و سهولت برنامه نویسی JSON لذت می برند.
امروزه، فروشگاههای داده مبتنی بر سند مانند MongoDB یک API ارائه میکنند که با ساختارهای دادهای شبیه JSON کار میکند. در مصاحبه ای در اوایل سال ۲۰۲۲، مارک پورتر، مدیر ارشد فناوری MongoDB، خاطرنشان کرد که از دیدگاه او، JSON هنوز در حال پیشروی در مرز داده ها است. برای قالب داده ای که با یک بریس فرفری و یک دو نقطه شروع شده بود، بد نیست.
چرا توسعه دهندگان از JSON استفاده می کنند
مهم نیست که روی چه نوع برنامه یا مورد استفاده ای کار می کنند، توسعه دهندگان نرم افزار به راهی برای توصیف و تبادل داده نیاز دارند. این نیاز در پایگاههای اطلاعاتی، منطق تجاری، رابطهای کاربری و در تمامی ارتباطات سیستمی یافت میشود. رویکردهای زیادی برای ساختار دادن به داده ها برای تبادل وجود دارد. دو اردوگاه گسترده، دادههای باینری و مبتنی بر متن هستند. JSON یک قالب مبتنی بر متن است، بنابراین برای افراد و ماشینها قابل خواندن است.
JSON به دلایل مختلف روشی بسیار موفق برای قالببندی دادهها است. اول اینکه بومی جاوا اسکریپت است و در داخل برنامه های جاوا اسکریپت به صورت JSON استفاده می شود. شما همچنین می توانید از JSON با سایر زبان های برنامه نویسی استفاده کنید، بنابراین برای تبادل داده بین سیستم های ناهمگن مفید است. بالاخره برای انسان قابل خواندن است. برای ساختار داده زبان، JSON یک ابزار فوق العاده همه کاره است. همچنین استفاده از آن نسبتاً بدون درد است، به خصوص در مقایسه با فرمت های دیگر.
نحوه عملکرد JSON
وقتی نام کاربری و رمز عبور خود را در فرمی در یک صفحه وب وارد میکنید، با یک شی با دو فیلد تعامل دارید: نام کاربری و رمز عبور. به عنوان مثال، صفحه ورود به سیستم را در شکل ۱ در نظر بگیرید.
شکل ۱. یک صفحه ورود ساده.
فهرست ۱ این صفحه را نشان می دهد که با استفاده از JSON شرح داده شده است.
{
username: “Bilbo Baggins”,
password: “fkj3442jv9dwwf”
}
همه چیز در داخل براکت ها یا براکت های خمیده ( {…} ) متعلق به یک شی است. یک شی، در این مورد، در کلیترین معنای آن به یک «شیء واحد» اشاره میکند. درون پرانتزها، ویژگیهایی وجود دارند که به آن چیز تعلق دارند. هر ویژگی دو بخش دارد: یک نام و یک مقدار. ، با یک دونقطه از هم جدا می شوند. اینها به عنوان کلیدها و مقادیر شناخته می شوند. در فهرست ۱، “نام کاربری” یک کلید و “Bilbo Baggins” یک مقدار است.
ویژگیها، فیلدها و ویژگیها
هر یک از این عناصر برای اشاره به بخشهای یک شی JSON استفاده میشود. از نظر فنی، در زمینه یک زبان برنامه نویسی شی گرا، آنها اعضا نامیده می شوند. هر ویژگی، فیلد یا ویژگی عضوی از یک شی است.
نکته کلیدی در اینجا این است که JSON همه کارهای لازم را برای رفع نیاز انجام می دهد – در این مورد، نگه داشتن اطلاعات در فرم – بدون اطلاعات اضافی زیاد. می توانید به این فایل JSON نگاهی بیندازید و آن را درک کنید. به همین دلیل است که می گوییم JSON مختصر است. همچنین مختصر بودن JSON را به فرمتی عالی برای ارسال از طریق سیم تبدیل می کند.
JSON در مقابل XML
JSON به عنوان جایگزینی برای XML، که زمانی قالب غالب برای تبادل داده بود، ایجاد شد. فرم ورود در فهرست ۲ با استفاده از XML توضیح داده شده است.
<UserLogin>
<Username>Samwise Gamgee</Username>
<Password>ghB5fK5</Password>
</UserLogin>
بله! تنها نگاه کردن به این فرم خسته کننده است. تصور کنید باید آن را در کد ایجاد و تجزیه کنید. در مقابل، استفاده از JSON در جاوا اسکریپت بسیار ساده است. آن را امتحان کنید. F12 را در مرورگر خود بزنید تا یک کنسول جاوا اسکریپت باز شود، سپس JSON نشان داده شده در فهرست ۳ را جایگذاری کنید.
let hobbitJson = {
name: "Pippin",
hometown: "Shire"
}
console.log(hobbitJson.name); // outputs “Pippin”
hobbitJson.bestFriend = "Merry"; // modify the object
console.log(JSON.stringify(hobbitJson)); //output entire object
// {"name":"Pippin","hometown":"Shire","bestFriend":"Merry"}
خواندن XML سخت است و از نظر چابکی کدنویسی، چیزهای زیادی را میتوان مورد نظر قرار داد. JSON برای حل این مشکلات ایجاد شده است. جای تعجب نیست که کم و بیش جایگزین XML شده است.
JSON در مقابل YAML و CSV
دو فرمت داده که گاهی اوقات با JSON مقایسه می شود YAML و CSV هستند. این دو قالب در انتهای مخالف طیف زمانی قرار دارند. CSV یک قالب قدیمی و پیش دیجیتال است که در نهایت راه خود را برای استفاده در رایانه پیدا کرد. YAML از JSON الهام گرفته شده است و چیزی از نسل مفهومی آن است.
CSV یک لیست ساده از مقادیر است که هر ورودی با یک کاما یا یک کاراکتر جداکننده دیگر مشخص می شود، با یک ردیف اول اختیاری از فیلدهای سرصفحه. این به عنوان یک رسانه تبادل و ساختار برنامه نویسی محدود است، اما همچنان برای خروجی حجم زیادی از داده ها به دیسک مفید است. و البته، سازماندهی داده های جدولی CSV برای مواردی مانند صفحات گسترده عالی است.
YAML در واقع یک ابر مجموعه از JSON است، به این معنی که از هر چیزی که JSON پشتیبانی می کند پشتیبانی می کند. اما YAML همچنین از یک نحو سادهتر پشتیبانی میکند که حتی مختصرتر از JSON است. به عنوان مثال، YAML از تورفتگی برای سلسله مراتب استفاده می کند و از بریس ها صرف نظر می کند. اگرچه گاهی اوقات YML به عنوان یک قالب تبادل داده استفاده می شود، بزرگترین مورد استفاده آن در فایل های پیکربندی است.
آیا YAML بهتر از JSON است؟
به تفاوت بین YAML و JSON مراجعه کنید؟ برای اطلاعات بیشتر در مورد نحوه مقایسه این استانداردها.
JSON پیچیده: تودرتو، اشیا و آرایهها
تا کنون، شما فقط نمونه هایی از JSON را دیده اید که با اشیاء کم عمق (یا ساده) استفاده می شود. این فقط به این معنی است که هر فیلد روی شی دارای مقدار اولیه است. JSON همچنین قادر به مدل سازی ساختارهای داده پیچیده دلخواه مانند نمودارهای شی و نمودارهای چرخه ای است – یعنی ساختارهایی با ارجاعات دایره ای. در این بخش، نمونههایی از مدلسازی پیچیده از طریق تودرتو، ارجاعات شیء و آرایهها را مشاهده خواهید کرد.
JSON با اشیاء تودرتو
فهرست ۴ نحوه تعریف اشیاء JSON تودرتو را نشان می دهد.
let merry = { name: "Merry",
bestfriend: {
name: "Pippin"
}
}
ویژگی bestfriend
در فهرست ۴ به شی دیگری اشاره دارد که به صورت درون خطی به صورت JSON literal تعریف شده است.
JSON با ارجاعات شی
اکنون فهرست ۵ را در نظر بگیرید، جایی که به جای نگه داشتن نام در ویژگی bestfriend
، یک ارجاع به شی واقعی نگه می داریم.
let merry = { race: "hobbit", name: “Merry Brandybuck” }
let pippin = {race: "hobbit", name: “Pippin Took”, bestfriend: merry }
console.log(JSON.stringify(pippin.bestfriend.name)); // outputs “Merry Brandybuck”
در فهرست ۵، ما دسته را به شی merry
در ویژگی bestfriend
میگذاریم. سپس، میتوانیم شیء واقعی Merry
را از شی pippin
از طریق ویژگی bestfriend
بدست آوریم. ما نام شی merry
را با ویژگی name
به دست آوردیم. این پیمایش نمودار شی نامیده می شود که با استفاده از عملگر نقطه انجام می شود.
JSON با آرایهها
نوع دیگری از ساختاری که ویژگی های JSON می توانند داشته باشند آرایه ها هستند. اینها دقیقاً شبیه آرایههای جاوا اسکریپت هستند و همانطور که در فهرست ۶ نشان داده شده است با یک براکت نشان داده میشوند.
{
towns: [ “The Shire”, “Rivendale”, “Gondor” ]
}
البته، آرایه ها ممکن است ارجاعاتی به اشیاء دیگر نیز داشته باشند. با این دو ساختار، JSON می تواند هر محدوده ای از روابط شی پیچیده را مدل کند.
خلاصه انواع مقادیر JSON
تاکنون رشته ها، اشیاء و آرایه ها را به عنوان انواع مقدار دیده اید. انواع مقادیر اضافی برای خصوصیات JSON عبارتند از: رشته، عدد، شی، آرایه، true، false و null.
تجزیه و تولید JSON
تجزیه و تولید JSON به ترتیب به معنای خواندن و ایجاد آن است. قبلاً JSON.stringify()
را در عمل دیدهاید. این مکانیزم داخلی برای برنامههای جاوا اسکریپت است تا یک نمایش شی در حافظه را دریافت کرده و آن را به یک رشته JSON تبدیل کنند. برای رفتن به جهت دیگر – یعنی یک رشته JSON را بردارید و آن را به یک شی در حافظه تبدیل کنید – از JSON.parse()
استفاده می کنید.
در اکثر زبانهای دیگر، استفاده از کتابخانه شخص ثالث برای تجزیه و تولید ضروری است. به عنوان مثال، در جاوا وجود دارد کتابخانه های متعدد، اما محبوب ترین آنها جکسون و GSON. این کتابخانهها پیچیدهتر از stringify
و parse
در جاوا اسکریپت هستند، اما آنها همچنین قابلیتهای پیشرفتهای مانند نگاشت به و از انواع سفارشی و برخورد با سایر قالبهای داده را ارائه میدهند.
در جاوا اسکریپت، ارسال و دریافت JSON به سرورها رایج است. برای مثال با fetch()
API داخلی. هنگام انجام این کار، می توانید به طور خودکار پاسخ را تجزیه کنید، همانطور که در فهرست ۷ نشان داده شده است.
fetch('https://the-one-api.dev/v2/character')
.then((response) => response.json())
.then((data) => console.log(data));
وقتی JSON را به یک ساختار داده در حافظه تبدیل میکنید، چه جاوا اسکریپت یا زبان دیگری، میتوانید از APIها برای دستکاری ساختار استفاده کنید. به عنوان مثال، در جاوا اسکریپت، JSON تجزیه شده در فهرست ۷ مانند هر شی جاوا اسکریپت دیگری قابل دسترسی است — شاید با حلقه زدن از طریق data.keys
یا دسترسی به ویژگی های شناخته شده در شی داده.
JWTs
احراز هویت بخشی دیگر است که در آن از JSON استفاده می شود. توسعهدهندگان و سایرین از ژتونهای وب JSON یا JWTها برای برقراری ارتباط با ادعاهای احراز هویت استفاده میکنند. JWT ها فرمت استاندارد و فشرده ای دارند و به صورت رمزنگاری امضا شده اند تا از دستکاری جلوگیری شود. آنها همچنین می توانند برای محرمانه بودن رمزگذاری شوند.
شما JSON و قالبکننده JSON
جاوا اسکریپت و JSON به طرز باورنکردنی انعطاف پذیر هستند، اما گاهی اوقات شما به ساختار بیشتری نسبت به آنچه ارائه می دهند نیاز دارید. در زبانی مانند جاوا، تایپ قوی و انواع انتزاعی (مانند رابط ها) به ساختار برنامه های در مقیاس بزرگ کمک می کند. در فروشگاه های SQL، یک طرحواره ساختار مشابهی را ارائه می دهد. اگر به ساختار بیشتری در اسناد JSON خود نیاز دارید، می توانید از طرحواره JSON برای تعریف صریح ویژگی های اشیاء JSON خود استفاده کنید. . پس از تعریف، می توانید از طرح برای اعتبارسنجی نمونه های شی و اطمینان از مطابقت آنها با طرح استفاده کنید.
مشکل دیگر مربوط به JSON پردازش شده توسط ماشین است که کوچک و ناخوانا است. خوشبختانه این مشکل به راحتی قابل حل است. فقط کافی است به JSON Formatter & Validator بروید (من این ابزار را دوست دارم اما ابزارهای دیگری وجود دارد)، در JSON خود جایگذاری کنید و دکمه Process را بزنید. یک نسخه قابل خواندن برای انسان خواهید دید که می توانید از آن استفاده کنید. اکثر IDE ها همچنین دارای یک فرمت کننده جاوا اسکریپت داخلی برای فرمت JSON شما هستند.
استفاده از JSON با TypeScript
TypeScript امکان تعریف انواع و رابطها را فراهم میکند، بنابراین زمانهایی وجود دارد که از JSON با TypeScript< استفاده میشود. /a> مفید است. یک کلاس، مانند یک طرح، ویژگی های قابل قبول یک نمونه از یک نوع معین را مشخص می کند. در جاوا اسکریپت ساده هیچ راهی برای محدود کردن خصوصیات و انواع آنها وجود ندارد. کلاس های جاوا اسکریپت مانند پیشنهادات هستند. برنامه نویس می تواند اکنون آنها را تنظیم کند و بعداً JSON را تغییر دهد. با این حال، یک کلاس TypeScript اعمال می کند که JSON چه ویژگی هایی می تواند داشته باشد و چه نوع هایی می تواند باشد.
نتیجه گیری
JSON یکی از ضروری ترین فناوری هایی است که در چشم انداز نرم افزار مدرن مورد استفاده قرار می گیرد. برای جاوا اسکریپت بسیار مهم است اما به عنوان یک حالت متداول تعامل بین طیف گسترده ای از فناوری ها نیز استفاده می شود. خوشبختانه، همان چیزی که JSON را بسیار مفید می کند، درک آن را نسبتاً آسان می کند. این یک قالب مختصر و قابل خواندن برای نمایش داده های متنی است.
پست های مرتبط
JSON چیست؟ قالب داده جهانی
JSON چیست؟ قالب داده جهانی
JSON چیست؟ قالب داده جهانی