فرمت داده ای جیسون چیست و چه کاربردی دارد؟

دوشنبه 11 فروردین 1399

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

 فرمت داده ای جیسون چیست و چه کاربردی دارد؟

JavaScript Object Notation که به اختصار فرمت داده ای جیسون نیز نامیده می شود یک شِمای مبتنی بر متن است که برای نمایش ساختار داده ها که بر پایه کلید-مقدار هستند استفاده می شود. اگرچه جیسون از جاوا اسکریپت گرفته شده است ولی با این وجود در بسیاری از کتابخانه های اصلی بسیاری از زبان های برنامه نویسی مورد استفاده قرار می گیرد. این فرمت داده ای معمولا ولی نه همیشه برای تبادل اطلاعات بین سرویس دهندگان وب و سرورهای وب مورد استفاده قرار می گیرد. ما در این مطلب قصد داریم کمی بیشتر درباره فرمت داده ای جیسون صحبت کنیم و اطلاعاتی را در خصوص آن در اختیار شما قرار دهیم.

مقدمه ای درباره فرمت داده ای جیسون

در طی 15 سال گذشته فرمت داده ای جیسون در کل وب قرار گرفته است. امروزه این فرمت اولین انتخاب برای هر سرویس وبی است که در دسترس عموم قرار دارد و حتی اغلب برای خدمات وب خصوصی نیز مورد استفاده قرار می گیرد. یکی از مهمترین دلایل محبوبیت جیسون این است که در بسیاری از پایگاه های داده پشتیبانی می شود. پایگاه داده های رابطه ای مانند PostgreSQL و MySQL دارای امکاناتی برای ذخیره و کوئری زدن بر روی جیسون هستند. علاوه بر این پایگاه داده های NoSQL مانند MongoDB و Neo4j نیز از این فرمت پشتیبانی می کنند. البته توجه داشته باشید که MongoDB از یک نسخه اصلاح شده و باینری از جیسون استفاده می کند.

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

 فرمت داده ای جیسون

یک مثال از جیسون

در ادامه مثالی برای شما آورده ایم که نشان دهنده داده ها در فرمت جیسون می باشد:

{

  “firstName”: “Jonathan”,

  “lastName”: “Freeman”,

  “loginCount”: 4,

  “isWriter”: true,

  “worksWith”: [“Spantree Technology Group”, “InfoWorld”],

  “pets”: [

    {

      “name”: “Lilly”,

      “type”: “Raccoon”

    }

  ]

}

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

 فرمت داده ای جیسون

فرمت داده ای جیسون چیست؟

جیسون یک فرمت داده ای عمومی است که شامل کمترین تعداد انواع داده ای است که این تایپ ها شامل: رشته ها، اعداد، بولین ها، لیست ها، اشیا و null می باشد. اگرچه این نشانه گذاری زیرمجموعه ای از جاوا اسکریپت به شمار می آید ولی این انواع داده ای در بسیاری از زبان های برنامه نویسی رایج نمایش داده می شوند که همین موضوع باعث می شود تا جیسون یک فرمت فوق العاده برای داده ها باشد.

 فرمت داده ای جیسون

فایل های جیسون

داده های جیسون در فایل هایی ذخیره می شوند که با پسوند. json به پایان می رسند. این موضوع باعث می شود تا فایل های جیسون کاملا برای انسان ها نیز خوانا باشند. در واقع این فایل ها اطلاعات را به صورت متن ساده ذخیره کرده اند که به سادگی باز می شود و شما می توانید آن را اصلاح کنید. مطابق با آنچه که وبلاگ SQLizer توضیح می دهد این موضوع کلید اصلی همکاری گسترده جیسون با بسیاری از اپلیکیشن ها می باشد چرا که هر زبانی که شما بیان کنید می تواند به سادگی این اطلاعات را بخواند و پردازش هایی را بر روی آن انجام دهد و به سادگی نیز می توان آنها را در سراسر اینترنت ارسال کرد.

 فرمت داده ای جیسون

چرا باید از جیسون استفاده کنیم؟

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

از آنجایی که بارگزاری مجدد کل صفحه یک عملیات سنگین بود توسعه دهندگان وب به دنبال تکنولوژی های جدید برای بهبود تجربه کاربری بودند. در همین حال قابلیت ایجاد درخواست های وب در پس زمینه در زمانی که صفحه به کاربر نمایش داده میشد که اخیرا و با انتشار اینترنت اکسپلورر نسخه 5 رونمایی شد به عنوان یک رویکرد خوب و شدنی برای بارگذاری داده ها برای نمایش به کاربران شناخته شد. به جای اینکه کل محتوای موجود در صفحه بارگذاری شود کلیک کردن باعث می شود تا یک درخواست به سرور ارسال شود که در پس زمینه انجام می شود. زمانی که محتوا بارگذاری می شود داده می تواند دستکاری، ذخیره و یا در صفحه نمایش داده شود که برای این کار از جاوا اسکریپت استفاده می شود که زبان برنامه نویسی جهانی برای مرورگرها به شمار می آید.

 فرمت داده ای جیسون

REST در مقابل SOAP: جیسون کانکشن( بخش اول)

در ابتدا این داده با استفاده از یک پروتکل پیام رسانی که SOAP نامیده میشد به XML منتقل شد( مثال زیر را مشاهده کنید). با این حال XML برای مدیریت در جاوا اسکریپت بسیار طولانی و سخت بود. جاوا اسکریپت قبلا دارای اشیا بود که به عنوان روشی برای نمایش داده ها در زبان به شمار می آمد. بنابراین Douglas Crockford بخشی از این نوع نمایش را گرفت و آن را به عنوان فرمت داده ای جدید معرفی کرد که بعدها آن را فرمت داده ای جیسون نامید. جیسون برای خواندن افراد و همینطور parse کردن توسط مرورگر بسیار ساده تر بود.

 فرمت داده ای جیسون

REST در مقابل SOAP: جیسون کانکشن( بخش دوم)

در طول سال 2000 میلادی یک تکنولوژی وب سرویس دیگر که Representational State Transfer یا به اختصار REST نامیده می شد جای SOAP را برای انتقال داده ها گرفت. یکی از مهمترین مزیت های برنامه نویسی با استفاده از API های REST این است که شما می توانید از دو نوع فرمت داده ای استفاده کنید( نه تنها XML و جیسون بلکه شما می توانید از HTML نیز در آن استفاده کنید). از آنجائی که توسعه دهندگان وب جیسون را به XML ترجیح می دادند بنابراین آنها استفاده از REST را به SOAP ترجیح می دادند. همانطور که Kostyantyn Kharchenko در وبلاگ Svitla بیان می کند: " از بسیاری از جهات مختلف موفقیت REST به دلیل استفاده از فرمت جیسون است چرا که استفاده از آن در بسیاری از پلتفرم های مختلف ساده است".

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

 فرمت داده ای جیسون

جیسون در مقابل XML

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

<?xml version="1.0"?>

<person>

  <first_name>Jonathan</first_name>

  <last_name>Freeman</last_name>

  <login_count>4</login_count>

  <is_writer>true</is_writer>

  <works_with_entities>

    <works_with>Spantree Technology Group</works_with>

    <works_with>InfoWorld</works_with>

  </works_with_entities>

  <pets>

    <pet>

      <name>Lilly</name>

      <type>Raccoon</type>

    </pet>

  </pets>

</person>

علاوه بر این برای شفافیت بیشتر برای شما باید بدانید که XML در زمان parse شدن در جاوا اسکریپت ابهامات زیادی را نیز وارد می کند. تبدیل کردن XML به شی جاوا اسکریپت می تواند نیازمند صرف صدها و یا حتی هزاران خط کد باشد و نیازمند این است که شما کدها را براساس اشیایی که Parse می شوند شخصی سازی کنید. تبدیل کردن جیسون به شی جاوا اسکریپت تنها نیازمند یک خط کد است و نیازی به هیچ اطلاعاتی درباره شیئی که parse خواهد شد ندارد.

 فرمت داده ای جیسون

محدودیت های جیسون( بخش اول)

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

شِمای جیسون:

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

تنها یک نوع داده عددی دارد:

در واقع منظور فرمت IEEE-754 double-precision floating-point است. این می تواند کمی ساده باشد اما به سادگی به این معنا است که شما نمی توانید از نوع های عددی که در بسیاری از زبان های برنامه نویسی وجود دارند در فرمت داده ای جیسون استفاده کنید.

 فرمت داده ای جیسون

محدودیت های فرمت داده ای جیسون( بخش دوم)

نداشتن نوع داده:

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

نداشتن کامنت:

این موضوع باعث می شود تا حاشیه نویسی برای کدها غیر ممکن باشد و در صورتی که قصد داشته باشید چنین حاشیه نویسی هایی را برای فایل های خود داشته باشید مجبور هستید که فایل های جدیدی را اضافه کنید.

توضیحات زیاد:

با وجود اینکه فرمت داده ای جیسون بسیار کوتاه تر از XML می باشد اما با این حال نمی توان گفت که مختصرترین روش برای نمایش داده ها است. شما می توانید برای خدمات با حجم بالا و یا برخی از اهداف خاص از فرمت های داده ای کوتاه تر و مختصرتر استفاده کنید.

 فرمت داده ای جیسون

چه زمانی باید از فرمت داده ای جیسون استفاده کنیم؟( بخش اول)

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

در مورد ارتباط سرور با سرور بهتر است که از فریم ورک های serialization مانند Apache Avro و یا Apache Thrift استفاده کنید. توجه داشته باشید که فرمت داده ای جیسون در این جا گزینه بدی نیست و دقیقا کاری که شما می خواهید را انجام می دهد اما پاسخی که شما دریافت می کنید به واضحی ارتباطات وب و یا اپلیکیشن های موبایل نیست.

اگر شما هم از پایگاه داده NoSQL استفاده می کنید احتمالا شما هم درگیر بانک اطلاعاتی که به شما ارائه می شود شده اید. در پایگاه داده های رابطه ای که فرمت داده ای جیسون به عنوان یک نوع داده پذیرفته می شود باعث می شود تا استفاده جیسون راحت تر باشد. پایگاه های داده ای رابطه ای برای داده های ساختار یافته یک گزینه مناسب هستند که با یک طرح خاص تنظیم شده اند. در حالی که امروزه این پایگاه های داده ای در پذیرش داده هایی به فرم جیسون بسیار منعطف هستند و از آنها پشتیبانی می کنند اما با این حال شما انتظار دارید که بتوانید با عملکرد و سرعت بهتری درون ویژگی های جیسون جستجو کنید.

 فرمت داده ای جیسون

چه زمانی باید از فرمت داده ای جیسون استفاده کنیم؟( بخش دوم)

فرمت داده ای جیسون یک فرمت همه کاره است که برای ارسال داده بین سرور و وب سایت ها و همینطور اپلیکیشن های موبایل استفاده می شود. طراحی ساده و انعطاف پذیری این فرمت داده ای باعث می شود تا خواندن و متوجه شدن آن بسیار ساده باشد و در بسیاری از موارد اصلاح کردن آن در زبان برنامه نویسی که شما انتخاب میکنید ساده است. نداشتن یک طرح دقیق باعث شده است که فرمت داده ای جیسون دارای انعطاف پذیری بسیار زیادی باشد اما این انعطاف پذیری گاهی اوقات باعث می شود تا شما نتوانید مطمئن شوید که یک فایل جیسون را به درستی می خوانید یا می نویسید.

 فرمت داده ای جیسون

Parser فرمت داده ای جیسون

بخشی از کدهای اپلیکیشن که داده های ذخیره شده در فرمت داده ای جیسون را به فرمت مورد نیاز در برنامه شما تبدیل می کند parser گفته می شود. همانطور که احتمالا انتظار دارید جاوا اسکریپت دارای یک parser نیتیو است که در واقع همان متد JSON.parse می باشد.

در برخی از زبان های برنامه نویسی مانند Scala و Elm ممکن است شما برای کار کردن با فرمت داده ای جیسون نیازمند سختی های بیشتری باشید اما استقبال گسترده از جیسون به این معنا است که در حال حاضر کتابخانه ها و ابزارهای بسیار زیادی وجود دارند که در سخت ترین لحظات در زمان کار کردن با فرمت داده ای JSON به شما کمک خواهند کرد.

وب سایت json.org شامل لیستی از کتابخانه هایی است که شما می توانید از آنها برای parse کردن، تولید کردن و اصلاح جیسون استفاده کنید که این ابزارها در بسیاری از زبان های برنامه نویسی همچون پایتون، سی شارپ و COBOL موجود می باشند.

 فرمت داده ای جیسون

آشنایی با ابزارهای جیسون( بخش اول)

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

 فرمت داده ای جیسون

آشنایی با ابزارهای فرمت داده ای جیسون( بخش دوم)

فرمت کننده جیسون: JSONLint می تواند کدهای دلخواه با فرمت داده ای جیسون شما را فرمت کرده و آنها را اعتبار سنجی کند.

نمایش دهنده فرمت داده ای جیسون: Stack.hu دارای سایتی است که می تواند یک درخت تعاملی را برای شما بسازد تا به این ترتیب به شما کمک کند تا ساختار فایل های با فرمت داده ای جیسون را بهتر متوجه شوید.

زیبا ساز فایل های جیسون: اگر شما هم جز افرادی هستید که به دنبال چاپ زیباتر کدهای با فرمت داده ای جیسون هستید Prettydiff می تواند در این زمینه کمک زیادی به شما کند.

تبدیل کننده فایل های جیسون: آیا شما هم نیاز دارید که خیلی سریع داده هایی که به فرمت داده ای جیسون هستند را به فرمت های دیگری تغییر دهید؟ Convertcsv.com دارای ابزاری است که می تواند فایل های جیسون را به CSV( که به راحتی می توانید آن را در اکسل باز کنید) و یا XML تبدیل کند.

 فرمت داده ای جیسون

جمع بندی و صحبت پایانی

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

برنامه نویسان

نویسنده 3201 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید