JSON کوتاهشدهی عبارت «Javascript Object Notation» به معنی «نشانگذاری شیء جاوااسکریپت» است. JSON شیوهای است که با کمک آن اشیا و اطلاعات برنامهنویسی به متن قابل پردازش توسط رایانه و قابل فهم برای انسان تبدیل میشوند.
نکته مهم در این شیوه قابلیت فهم آسان توسط انسان است که در دیگر شیوهها مانند XML کمتر به آن توجه شده است.
همان گونه که از نام JSON مشخص است، جاوااسکریپت به صورت پیشفرض میتواند رشتههای JSON را پردازش و آنها را ایجاد کند. افزون بر جاوااسکریپت، تقریبا تمام زبانهای برنامه نویسی متداول با کمک کتابخانههای جانبی از JSON پشتیبانی میکنند.
برای ساخت عبارتهای JSON چند قانون ساده وجود دارد که به کوتاهی آنها را مرور میکنیم:
- عبارتهای JSON باید میان آکولاد «{}» قرار بگیرند.
- اعضای شیء با علامت ویرگول«,» از هم جدا میشوند
- برای تعریف یک عضو در یک شیء JSON، ابتدا «نام عضو» سپس دونقطه«:» و در پایان «مقدار» نوشته میشود
- مقدار میتواند یکی از انواع «عدد»، «رشته»، «بولی»، «آرایه»، «شیء» و «نال» را بپذیرد. سایر انواع داده باید به صورتی دیگر ذخیره شوند
- انواع رشتهای باید داخل دو گیومه «"» قرار بگیرند
- بسته به زبان مبدا و مقصد انواع دادهی دیگری نیز ممکن است قابل پذیرش باشند
با توجه به قانونهای گفته شده، یک شیء سادهی JSON در جاوااسکریپت را اینگونه تعریف میکنیم:
var myObj = { fname: "Amir Masoud", lname: "Irani", regNo: 2020, likes: [ "programming", "software", "sleeping" ] }; |
همانگونه که مشاهده میکنید در شیء بالا چهار عضو با انواع «رشته»، «عدد» و «آرایه» تعریف شدهاند.
استفاده از این شیء در جاوااسکریپت بسیار ساده است:
alert( myObj.fname ); alert( myObj.lname ); alert( myObj.regNo.toString() ); alert( myObj.likes[ 0 ] ); |
از مهمترین کاربردهای JSON انتقال اطلاعات میان جاوااسکریپت و زبانهای سمت کارساز مانند php و asp.net است. برای تبدیل رشتهای حاوی اشیای JSON در جاوااسکریپت میتوان به صورت زیر عمل کرد. البته پیش از آن از صحت کد مطمئن شوید.
var myJSON = '{ name: "AMIB", regNo: 2020 }'; var myObj = eval("(" + myJSON + ")"); alert( myObj.name ); |
برای تبدیل یک شیء به رشتهای حاوی JSON هم از دستور زیر میتوانید استفاده کنید:
var myObj = { name: "AMIB", regNo: 2020 }; var myJSON = JSON.stringify( myObj ); // myJSON = '{name:"AMIB",regNo:2020}' alert( myJSON ); |
در زبان جاوااسکریپت محدودیتهای کمتری برای تعریف JSON وجود دارد. برای مثال میتوان یک تابع را به عنوان مقدار برای عضو تعریف کرد یا اینکه بهجای گیومه از علامت آپستروف «'» برای تعریف انواع رشتهای استفاده کرد.
پشتیبانی از JSON در آخرین ویرایش جاوااسکریپت استانداردسازی شده است. برخی از مرورگرهای قدیمی تمامی ویژگیهای JSON را به درستی پیادهسازی نکردهاند بنابراین بهتر است پیش از انتشار نهایی، نرمافزار خود را به خوبی آزمایش کنید.
سلام امیر آقا…
خسته نباشی
روی پروژه ای کار می کنم که برام گره به وجود اومده. گفتم از شما بپرسم!
چطوری محتویات صفحه با توجه به اندازه صفحه متغییر باشه
مثلا نسبت های ۳/۴ و ۴/۳ و ۱۶/۹ و … داریم، می خواهیم برای هر کدوم صفحه جداگانه ای نمایش داده بشه.
با جاوااسکریپت و CSS نشد! دلیلش هم مشخصه … Client , Server …
با PHP و CSS هم نشد. یعنی چیزی پیدا نکردم…
شما چیزی به ذهنتون نمی رسه؟
سلام
طراحی صفحهی وب طوری که روی تمام سیستمها و تمام مرورگرها یکسان و زیبا دیده بشود
شاید بتوان گفت که غیر ممکن است. چون ترکیب سیستمعامل، نمایشگر، مرورگر، عمق رنگ، سرعت اینترنت حالتهای بیشماری را ایجاد میکنند.
برای سایتهایی که میخواهند بیشترین کارایی را داشته باشند
بررسی سیستمعامل و مرورگر در سمت سرور و طراحی شناور قالب با کمک CSS عملیترین کار ممکن است
به این صورت که سمت سرور مرورگر و سیستمعامل مقابل رو بررسی میکنید و مطابق اون محتوای متغیری رو به مشتری میفرستید
و در سمت مشتری هم با کمک CSS سعی میکنید محتوا در صورت تغییر اندازهی صفحه کمترین بینظمی رو داشته باشه
به طور کلی رسیدن به هدف دلخواه وقتی که سیستم هدف متنوع است کار خیلی سختی است
و حتی شاید از توان یک نفر خارج باشد
لطفا در صورت تمایل به ادامهی گفتگو، از ایمیل یا فیسبوک استفاده کنید تا بخش نظرات وبلاگ به مطالب مرتبط اختصاص داده بشود
با تشکر
می توانید از ext js استفاده کنید
خیلی خوب ممنون
دوست عزیز ممنون به خاطر مطلب مفیدت
با سلام دوست من
آیا اجازه میدهید که مطلب شما را در سایتم منتشر کنم ؟
سلام
اختیار دارید
از اینکه اصول حرفهای را رعایت میکنید خوشحالم و از شما تشکر میکنم
سلام امیرخان
آیا شما در مورد امنیت در تبادل اطلاعات با جیسون ، مخصوصا امنیت و استانداردسازی جیسون برای گوشی های آیفون اطلاعی داری؟
من یک برنامه تحت وب دارم که باید یکسری اطلاعات رو به ساختار جیسون به یک نرم افزار آیفون ارسال کنه. و موضوع امنیت خیلی مهمه. ممنون میشم اگه بتونی راهنماییم کنی
سلام
JSON که به تنهایی ویژگی خاصی برای امنیت ندارد
عبارتها به صورت متنی و کدنشده ارسال میشوند
برای دستیابی به امنیت باید بررسی کنید که هدف شما چیست؟
اگر منظور شما از امنیت این است که کسی( ISP ) یا برنامههای موازی روی سیستمعامل نتوانند اطلاعات شما را مشاهده کنند
راه آن انتقال JSON از پروتکل https است
یا نوشتن لایهای شبیه به https که همان کار را انجام دهد
استفاده از https بهترین راه است ولی مستلزم صرف هزینه برای تهیهی گواهی امنیتی است
که با توجه به قیمتهای جدید کمی دور از دسترس به نظر میرسد
از طرف دیگر نوشتن لایهای با قابلیتهای https کار پیچیده و دشواری است
به طور کلی فکر میکنم نگرانی شما نابجا باشد
و انتقال JSON از طریق http مشکلی برای امنیت شما ایجاد نکند
آقا خیلی ممنون مطالبتون علیه.موفق باشید.
مطالبتون خیلی خوب بودن، ممنون.
سلام.
من اگه بخوام به مقادیر همچین آرایه ای در پی اچ پی دسترسی داشته باشم باید چگونه عمل کنم؟
راستی نحوه دسترسی به مثادیر آرایه ی جیسان در پی اچ پی چگونه است؟ با تشکر از شما
با سلام
اطلاعاتی که در کامنت خودتان درج کرده بودید برای حل مشکل کافی نبودند
به نظر میرسید که یک شیء با تعدادی متغیر خصوصی را میخواهید باز کنید که ممکن است ارتباطی با JSON نداشته باشد
لطفا اطلاعات دقیقتر را به ایمیل بنده بفرستید تا در اولین فرصت آن را بررسی کنم
amibct در gmail
سپاس
سلام و خسته نباشید خدمت شما
دیدم برای پارس کردن از eval استفاده کردید که هیچ ایرادی نداره اما خودش تابع داره، میتونید از JSON.parse استفاده کنید
موفق باشید
سلام
درست میفرمایید. استفاده از eval برای سازگاری با مرورگرهای قدیمیتر است
اگر پشتیبانی از مرورگرهای قدیمیتر مهم نباشد میتوانیم از JSON.parse استفاده کنیم
سلام.
من میخوام یه برنامه اندروید بنویسم که اطلاعاتی که کاربر وارد میکنه تو یه دیتابیس ذخیره بشه و از طرفی اطلاعات وارد شده از طریق یه وبسایتی که اونم خودم درست میکنم قابل استفاده باشه.
اگه اطلاعاتی در این باره دارین ممنون میشم یکم راهنماییم کنین که چطوری همچین کاری قابل اجرا هست.
با سلام
در بخش نگهداری اطلاعات روی موبایل، بسته به اینکه حجم اطلاعات شما چقدر باشد، روشها مختلفی وجود دارد که میبایست بسته به شرایط مورد بررسی قرار بگیرند.
برای ارسال اطلاعات به سرور هم روشهای مختلفی وجود دارد. ممکن است برای ارسال اطلاعات به سرور از هر روشی( اعم از AJAX یا SOAP یا Restful ) بخواهید اطلاعات را با روش JSON کدگذاری و ارسال دریافت کنید.
اتنخاب روش بهینه برای هر یک از نیازهای بالا، به بررسی بیشتر و مطالعه و برنامهنویسی نیاز دارد.