جی سان JSON
جی سان یا JSON چیست؟
جی سان (JSON) نوعی فرمت داده متنی است که در آن از متون قابل خواندن توسط انسان برای نگه داری و انتقال داده ها استفاده میشود. واژه JSON خلاصه شده عبارت JavaScript Object Notation به معنای نشانه گذاری اشیاء جاوا اسکریپت میباشد.
جی سان را میتوان یک فرمت متنی ساده و سبک برای نگه داری و انتقال داده ها به صورت سازماندهی شده به شمار آورد که درک محتوای آن برای انسان کار آسانی است و علاوه بر این ماشین ها هم به آسانی قادر به ایجاد کردن و تجزیه آن هستند. در این فرمت، داده ها در قالب مجموعهای از جفتهای نام – مقدار (معادل با آبجکت، آرایه انجمنی یا جدول درهم سازی در زبان های برنامه نویسی مختلف) و لیستی مرتب از مقادیر (معادل با آرایه ها) سازماندهی میشوند.
پیدایش JSON همانطور که از نامش انتظار میرود به زبان جاوا اسکریپت و اوایل دهه 2000 میلادی بازمیگردد. با اینحال به دلیل کارایی بالای این فرمت، اغلب زبانهای امروزی دارای کدهای لازم برای ایجاد و تجزیه داده ها در قالب JSON هستند. محبوبیت این فرمت نیز مدیون فعالیتهای داگلاس کراکفورد (Douglas Crockford) میباشد.
گفتنی است نوع رسانه (Media Type یا MIME Type) مختص به JSON به صورت application/json میباشد و پسوند استاندارد فایل هایی که به منظور نگه داری داده ها در این قالب استفاده میشود نیز به شکل .json است.
داده ها در JSON
همانطور که گفته شد در این فرمت داده ها به صورت مجموعهای از جفتهای نام – مقدار و همچنین آرایهای از مقادیر سازماندهی میشوند. به عبارت دقیقتر، جی سان از انواع داده های اصلی زیر پشتیبانی میکند که امکان استفاده تو در توی آنها نیز وجود دارد:
- اعداد
- رشته ها (String): دنباله ای از کاراکترها که در میان “” قرار میگیرند.
- بولین (Boolean): با مقادیر true یا false
- null: به معنای بدون مقدار
- آرایه (Array): لیستی مرتب از مقادیر که در میان [] قرار میگیرند و با کاما از هم جدا میشوند.
- آبجکت یا شئ (Object): مجموعهای نامرتب از جفتهای نام (name) و مقدار (value) که در میان {} قرار میگیرد و در آن نام ها که به ویژگی (attribute) نیز موسوم هستند به صورت رشته ظاهر میشوند. هر نام با نماد : (یا کلن) از مقدار منتسب به خود جدا میشود و هر جفت نام و مقدار نیز توسط کاما از یکدیگر جدا میشوند.
یک مثال ساده
در تصویر زیر میتوانید نمونهای از نمایش اطلاعات شخصی یک فرد در قالب JSON را مشاهده کنید:
همانطور که در این مثال میبینید مجموعهای از جفتهای نام (یا ویژگی) و مقدار، فرد موردنظر را براساس ویژگیهایی مثل اسم کوچک و فامیل، شماره ملی، جنسیت و … توصیف میکند. نام ها مثل “firstname” و “lastname” و “nationalID” به شکل رشته آمدهاند و مقادیر موجود در مثال هم به اشکال مختلفی نظیر رشته (مانند “John” برای “firstname” و “Smith” برای “lastname”)، عدد (مانند 123456789 برای “nationalID” و 27 برای “age”)، مقدار بولین (مانند true برای “married”) و null (برای “job”) ظاهر شدهاند. مقدار منتسب به phone نیز به صورت یک آرایه شامل تعدادی شماره تماس و نوع آن (مربوط به منزل، موبایل و …) میباشد که هرکدام از آنها یک شئ با دو ویژگی type و number همراه مقدار منتسب به آنهاست.
کاربردهای جی سان
از JSON به عنوان فرمت رایج برای انتقال داده ها در کاربردهای تحت وب استفاده میشود. ایجاد صفحات وب پویا و موقعیتهای مختلفی که در آن از XML یا فرمت های مشابه کمک گرفته میشود میتواند گزینههای مناسبی برای استفاده از فرمت جی سان باشد. علاوه بر این جی سان به عنوان یک قالب برای فایل های پیکربندی نیز به کار میرود.
JSON و JavaScript
از آنجایی که جی سان یک فرمت متنی است گزینه مناسبی برای انتقال داده ها بر بستر یک شبکه میباشد. زمانی که داده ها در این فرمت به صورت یک عبارت متنی توسط کلاینت دریافت میشود به منظور استفاده ابتدا لازم است تجزیه شود. در اغلب زبان ها علاوه بر قابلیت تبدیل داده ها به این فرمت، امکان تجزیه آن نیز فراهم شده است. برای مثال در زبان جاوا اسکریپت برای تجزیه رشته ای با فرمت جی سان و تبدیل آن به یک آبجکت جاوا اسکریپت از متد JSON.parse() به شکل زیر استفاده میشود:
var obj = JSON.parse(json_str);
که در آن json_str رشته ای با فرمت جی سان است. در صورتی که این رشته حاوی همان متن موجود در مثال فوق باشد برای دسترسی به داده های آن میتوانید از شیوه مرسوم کار با اشیا در زبان جاوا اسکریپت (برای مثال obj.nationalID جهت دسترسی به مقدار شماره ملی) کمک بگیرید.
سلام لطفا راهنماییم بفرمایید
چطور میتونم از فایل جی سان اطلاعات رو دسته بندی و استخراج کنم بر اساس اینکه مثلا اگر اطلاعات یک سری اشخاص که در شهرهای مختلف زندگی میکنن تمامی اشخاصی که در تهران زندگی میکنند یا در مشهد و … و اینها رو بتونم در پروژه ام جدا جدا صدا بزنم و کلیک تعریف کنم. ممنون
سلام؛
سوالتون خیلی کلی هست و متأسفانه پاسخش هم کوتاه نیست. خوشبختانه در بسیاری از زبان های برنامه نویسی امکان ایجاد و خواندن فایل ها و متون دارای فرمت JSON وجود دارد که با جستجو در میان داکیومنت های زبان موردنظر می تونید بهش دسترسی داشته باشید.
سلام،
من یک فایل لغت نامه تخصصی طی سالها تهیه کردم و به صورت Json هم درآوردم، حالا میخوام اپلیکیشن لغت نامه بنویسم شما چه محیطی رو به من پیشنهاد میکنید،
البته Android studio رو نصب کردم ولی completion code نرم افزار کارنمیکنه!!!!
[مابقی دیدگاه به دلیل دارا بودن اطلاعات شخصی حذف شدهاند]
سلام مصطفی گرامی؛
اگر به دنبال ساخت اپلیکیشن برای اندروید هستید طبیعتا پیشنهاد اصلی همون Android Studio هست که خودتون فرمودید.