JSON چیست؟

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 را به درستی پیاده‌سازی نکرده‌اند بنابراین بهتر است پیش از انتشار نهایی، نرم‌افزار خود را به خوبی آزمایش کنید.

این نوشته در برنامه‌نویسی, جاوااسکریپت ارسال و برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

۱۸ دیدگاه برای JSON چیست؟

  1. مجتهدی می‌گوید:

    سلام امیر آقا…
    خسته نباشی
    روی پروژه ای کار می کنم که برام گره به وجود اومده. گفتم از شما بپرسم!
    چطوری محتویات صفحه با توجه به اندازه صفحه متغییر باشه
    مثلا نسبت های ۳/۴ و ۴/۳ و ۱۶/۹ و … داریم، می خواهیم برای هر کدوم صفحه جداگانه ای نمایش داده بشه.
    با جاوااسکریپت و CSS نشد! دلیلش هم مشخصه … Client , Server …
    با PHP و CSS هم نشد. یعنی چیزی پیدا نکردم…
    شما چیزی به ذهنتون نمی رسه؟

    • امیرمسعود ایرانی می‌گوید:

      سلام

      طراحی صفحه‌ی وب طوری که روی تمام سیستم‌ها و تمام مرورگرها یکسان و زیبا دیده بشود
      شاید بتوان گفت که غیر ممکن است. چون ترکیب سیستم‌عامل، نمایشگر، مرورگر، عمق رنگ، سرعت اینترنت حالت‌های بی‌شماری را ایجاد می‌کنند.

      برای سایت‌هایی که می‌خواهند بیشترین کارایی را داشته باشند
      بررسی سیستم‌عامل و مرورگر در سمت سرور و طراحی شناور قالب با کمک CSS عملی‌ترین کار ممکن است

      به این صورت که سمت سرور مرورگر و سیستم‌عامل مقابل رو بررسی می‌کنید و مطابق اون محتوای متغیری رو به مشتری می‌فرستید
      و در سمت مشتری هم با کمک CSS سعی می‌کنید محتوا در صورت تغییر اندازه‌ی صفحه کمترین بی‌نظمی رو داشته باشه

      به طور کلی رسیدن به هدف دلخواه وقتی که سیستم هدف متنوع است کار خیلی سختی است
      و حتی شاید از توان یک نفر خارج باشد

      لطفا در صورت تمایل به ادامه‌ی گفتگو، از ایمیل یا فیسبوک استفاده کنید تا بخش نظرات وبلاگ به مطالب مرتبط اختصاص داده بشود
      با تشکر

    • حیدر نیکنهاد می‌گوید:

      می توانید از ext js استفاده کنید

  2. O می‌گوید:

    خیلی خوب ممنون

  3. علی می‌گوید:

    دوست عزیز ممنون به خاطر مطلب مفیدت

  4. Daniel می‌گوید:

    با سلام دوست من
    آیا اجازه میدهید که مطلب شما را در سایتم منتشر کنم ؟

  5. فواد می‌گوید:

    سلام امیرخان

    آیا شما در مورد امنیت در تبادل اطلاعات با جیسون ، مخصوصا امنیت و استانداردسازی جیسون برای گوشی های آیفون اطلاعی داری؟
    من یک برنامه تحت وب دارم که باید یکسری اطلاعات رو به ساختار جیسون به یک نرم افزار آیفون ارسال کنه. و موضوع امنیت خیلی مهمه. ممنون میشم اگه بتونی راهنماییم کنی

    • امیرمسعود ایرانی می‌گوید:

      سلام

      JSON که به تنهایی ویژگی خاصی برای امنیت ندارد
      عبارت‌ها به صورت متنی و کدنشده ارسال می‌شوند

      برای دستیابی به امنیت باید بررسی کنید که هدف شما چیست؟
      اگر منظور شما از امنیت این است که کسی( ISP ) یا برنامه‌های موازی روی سیستم‌عامل نتوانند اطلاعات شما را مشاهده کنند
      راه آن انتقال JSON از پروتکل https است
      یا نوشتن لایه‌ای شبیه به https که همان کار را انجام دهد
      استفاده از https بهترین راه است ولی مستلزم صرف هزینه برای تهیه‌ی گواهی امنیتی است
      که با توجه به قیمت‌های جدید کمی دور از دسترس به نظر می‌رسد
      از طرف دیگر نوشتن لایه‌ای با قابلیت‌های https کار پیچیده و دشواری است

      به طور کلی فکر می‌کنم نگرانی شما نابجا باشد
      و انتقال JSON از طریق http مشکلی برای امنیت شما ایجاد نکند

  6. بهنام می‌گوید:

    آقا خیلی ممنون مطالبتون علیه.موفق باشید.

  7. sona می‌گوید:

    مطالبتون خیلی خوب بودن، ممنون.

  8. احسان می‌گوید:

    سلام.
    من اگه بخوام به مقادیر همچین آرایه ای در پی اچ پی دسترسی داشته باشم باید چگونه عمل کنم؟
    راستی نحوه دسترسی به مثادیر آرایه ی جیسان در پی اچ پی چگونه است؟ با تشکر از شما

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      اطلاعاتی که در کامنت خودتان درج کرده بودید برای حل مشکل کافی نبودند
      به نظر می‌رسید که یک شیء با تعدادی متغیر خصوصی را می‌خواهید باز کنید که ممکن است ارتباطی با JSON نداشته باشد
      لطفا اطلاعات دقیق‌تر را به ایمیل بنده بفرستید تا در اولین فرصت آن را بررسی کنم
      amibct در gmail

  9. RaminMT می‌گوید:

    سلام و خسته نباشید خدمت شما
    دیدم برای پارس کردن از eval استفاده کردید که هیچ ایرادی نداره اما خودش تابع داره، میتونید از JSON.parse استفاده کنید

    موفق باشید

    • امیرمسعود ایرانی می‌گوید:

      سلام

      درست می‌فرمایید. استفاده از eval برای سازگاری با مرورگرهای قدیمی‌تر است
      اگر پشتیبانی از مرورگرهای قدیمی‌تر مهم نباشد می‌توانیم از JSON.parse استفاده کنیم

  10. mrm.gh می‌گوید:

    سلام.
    من میخوام یه برنامه اندروید بنویسم که اطلاعاتی که کاربر وارد میکنه تو یه دیتابیس ذخیره بشه و از طرفی اطلاعات وارد شده از طریق یه وبسایتی که اونم خودم درست میکنم قابل استفاده باشه.
    اگه اطلاعاتی در این باره دارین ممنون میشم یکم راهنماییم کنین که چطوری همچین کاری قابل اجرا هست.

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      در بخش نگهداری اطلاعات روی موبایل، بسته به اینکه حجم اطلاعات شما چقدر باشد، روش‌ها مختلفی وجود دارد که می‌بایست بسته به شرایط مورد بررسی قرار بگیرند.
      برای ارسال اطلاعات به سرور هم روش‌های مختلفی وجود دارد. ممکن است برای ارسال اطلاعات به سرور از هر روشی( اعم از AJAX یا SOAP یا Restful ) بخواهید اطلاعات را با روش JSON کدگذاری و ارسال دریافت کنید.
      اتنخاب روش بهینه برای هر یک از نیازهای بالا، به بررسی بیشتر و مطالعه و برنامه‌نویسی نیاز دارد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>