آموزش JSON


آموزش JSON - معرفی JSON

JSON سرنام عبارت JavaScript Object Notation می باشد.

JSON سینتکسی برای ذخیره و تبدیل اطلاعات متنی می باشد. بسیار شبیه XML است.

JSON از XML کوچکتر، ولی سریعتر است و همچنین راحت تر پردازش می شود.

 

مثال JSON 

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

شیء employees آرایه ای از رکوردهای employee است. (آرایه ای از اشیاء)


JSON چیست؟

  • JSON سرنام عبارت JavaScript Object Notation می باشد.
  • JSON فرمتی ساده و سبک برای مبادله اطلاعات متنی می باشد.
  • JSON مستقل از زبان است*.
  • JSON "خود توصیفی"  است و درک آن راحت است.

* JSON از سینتکس های جاوا اسکریپت (JavaScript) برای توصیف اشیاء داده استفاده می کند، اما لازم به ذکر است که هم از لحاظ زبانی و هم از لحاظ پلتفرم مستقل است. مفسر (Parser) های  JSON و کتابخانه های JSON برای اکثریت زبان های برنامه نویسی موجود است.


JSON در مقایسه با اشیاء جاوا اسکریپت (JavaScript)

فرمت متن JSON از لحاظ سینتکس شبیه کدهای ایجاد شیء در جاوا اسکریپت (JavaScript) است.

به خاطر این شباهت، برنامه JavaScript می تواند به جای استفاده از مفسر (Parser)، از تابع داخلی ()eval استفاده کند و داده های JSON را برای ایجاد اشیاء جاوا اسکریپت (JavaScript) محلی اجرا کند.


شباهت زیاد با XML:

  • JSON متن خام است.
  • JSON "خود توصیفی" است. (خوانایی بالایی دارد.)
  • JSON سلسه مراتبی است. (مقادیر داخل مقادیر)
  • مقادیر JSON می تواند توسط جاوا اسکریپت (JavaScript) تفسیر شود.
  • داده های JSON می تواند توسط AJAX انتقال داده شوند.

تفاوت های JSON با XML

  • تگ خاتمه ندارد.
  • کوتاه تر است.
  • نوشتن و خواندن آن سریعتر است.
  • می توانند توسط تابع داخلی جاوا اسکریپت ()eval تفسیر (Parse) شوند.
  • از آرایه ها استفاده می کنند.
  • واژگان رزرو شده ندارد.

چرا JSON؟

با استفاد از برنامه های کاربردی AJAX، از نظر سرعت و سادگی، JSON سریعتر و ساده تر از AJAX است.

با استفاده از XML:

  • سند XML را واکشی کنید.
  • از XML DOM برای حرکت در سند استفاده کنید.
  • مقادیر را استخراج کنید و داخل متغیر ها ذخیره کنید.

با استفاده از JSON:

  • رشته JSON را واکشی کنید.
  • از ()eval برای رشته JSON استفاده نمایید.

ساختار دستورات JSON زیر مجموعه ای از ساختار دستورات جاوا اسکریپت (JavaScript) است.


قوانین گرامر JSON

گرامر یا ساختار دستورات JSON زیر مجموعه ای از ساختار ایجاد شیء در جاوا اسکریپت (JavaScript) است:

  • داده ها به صورت زوج مقدار/نام هستند.
  • داده ها با کاما از همدیگر جدا می شوند.
  • علامت آکولاد برای نگه داشتن اشیاء بکار می رود.
  • از براکت برای نگه داشتن آرایه استفاده می شود.

زوج مقدار / نام در JSON

داده های JSON به صورت زوج های مقدار / نام نوشته می شوند.

زوج مقدار / نام شامل یک نام فیلد (در دابل کوتیشن)، است که بعد از آن یک دو نقطه می آید و بعد از دو نقطه مقدار فیلد ذکر می شود:

"firstName" : "John"

فهم این ساختار بسیار ساده است و این گونه مقدار دهی شبیه عبارت های جاوا اسکریپت (JavaScript) است.

firstName = "John"

مقادیر JSON

مقادیر JSON می تواند:

  • عددی باشد. (عدد صحیح یا اعشار)
  • رشته ای باشد. (در دابل کوتیشن قرار می گیرد)
  • منطقی یا بولین باشد. (true یا false)
  • آرایه باشد. (داخل براکت قرار می گیرد)
  • شیء باشد. (داخل آکولاد تعریف می شود)
  • null یا تهی باشد.

اشیاء JSON 

اشیاء JSON داخل آکولاد نوشته می شوند.

اشیاء می تواند شامل چندین زوج مقدار/نام باشد:

{ "firstName":"John" , "lastName":"Doe" }

این سینتکس نیز ساده و معادل عبارت های جاوا اسکریپت (JavaScript) می باشد:

firstName = "John";
lastName = "Doe";

آرایه های JSON

آرایه های JSON داخل براکت نوشته می شوند.

یک آرایه می تواند حاوی چند شیء باشد:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

در ساختار بالا، شیء "employees" در آرایه حاوی سه شیء است. هر شیء یک رکورد از کارمندان (با نام و نام خانوادگی ) است.


JSON از ساختار دستورات JavaScript استفاده می کند

به این خاطر که JSON از سینتکس جاوا اسکریپت (JavaScript) استفاده می کند، 

با استفاده از جاوا اسکریپت (JavaScript) می توانید آرایه ای از اشیاء را ایجاد نمایید و آن ها را مانند مثال زیر مقدار دهی کنید:

مثال

var employees = [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName": "Jones" }
];

مقدار اولین ورودی آرایه را می توان به صورت زیر به دست آورد:

employees[0].firstName + " " + employees[0].lastName;

مقدار برگشتی عبارت است از:

John Doe

مقدار می تواند مانند زیر تغییر نماید:

employees[0].firstName = "Gilbert";

خودتان امتحان کنید »

 در فصل بعدی خواهید آموخت چگونه متن JSON را به شیء جاوا اسکریپت تبدیل نمایید.


فایل های JSON 

  • فایل های JSON دارای پسوند "json." می باشد.
  • نوع MIME متون JSON عبارت است از "application/json".

تبدیل متن JSON به شیء جاوا اسکریپت (JavaScript)

یکی از استفاده های بسیار رایج JSON واکشی داده های سرویس دهنده وب (به عنوان یک فایل یا یک HttpRequest) و تبدیل داده های JSON به اشیاء جاوا اسکریپت (JavaScript) است. سپس می توان از این داده ها در صفحات وب استفاده کرد

برای سادگی، می توان این را با استفاده از یک رشته به عنوان ورودی (به جای فایل) نمایش داد.


مثال JSON - شیء از رشته

با استفاده از سینتکس JSON یک رشته جاوا اسکریپت ایجاد نمایید:

var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';

از آنجایی که سینتکس JSON زیر مجموعه ای از سینتکس جاوا اسکریپت (JavaScript) است، با استفاده از تابع ()eval می توانیم متن JSON را به شیء جاوا اسکریپت تبدیل کنیم.

با استفاده از تابع ()eval می توانیم از کامپایلر جاوا اسکریپت (JavaScript) برای تفسیر (parse) متن JSON استفاده کنیم و شیء جاوا اسکریپت ایجاد کنیم. اشیاء باید در پرانتز محصور شوند تا از خطا جلوگیری شود:

var obj = eval ("(" + txt + ")");

از جاوا اسکریپت در صفحات وب خود استفاده کنید:

مثال

<p>
First Name: <span id="fname"></span><br /> 
Last Name: <span id="lname"></span><br /> 
</p> 

<script>
document.getElementById("fname").innerHTML = obj.employees[1].firstName;
document.getElementById("lname").innerHTML = obj.employees[1].lastName; 
</script>

خودتان امتحان کنید »

JSON Parser

Note

تابع ()eval قادر است تا هر کد جاوا اسکریپتی را کامپایل و اجرا نماید. این ممکن است یک رخنه امنیتی محسوب شود.

استفاده از JSON parser  برای تبدیل متن JSON به شیء جاوا اسکریپت (JavaScript) امن تر است. JSON parser تنها شیء JSON ار تشخیص می دهد و اسکریپت ها را کامپایل نمی کند.

در مرورگرهایی که از JSON پشتیبانی می کنند، JSON parserها نیز سریعتر هستند.

JSON در تمام مرورگرهایی که از استاندارد ECMAScript یا همان جاوا اسکریپت پشتیبانی می کنند، پشتیبانی می شود.

پشتیبانی مرورگرها پشتیبانی نرم افزارهای وب
  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
  • jQuery
  • Yahoo UI
  • Prototype
  • Dojo
  • ECMAScript 1.5

خودتان امتحان کنید»

برای مرورگرهای قدیمی، کتابخانه جاوا اسکریپت در لینک https://github.com/douglascrockford/JSON-js وجود دارد.

فرمت JSON ابتدا توسط Douglas Crockford معرفی شد.