JavaScript:متد ()JSON.parse

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


دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴JavaScript:AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
JS vs jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری
---

یک استفاده رایج از JSON برای تبادل داده از یا با یک وب سرور است. [۱]

هنگامی که داده‌ای از یک وب سرور دریافت می‌کنید، داده همیشه یک رشته متنی است.

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

مثال - تبدیل JSON

تصور کنید ما این متن را از یک وب سرور دریافت کرده‌ایم:

'{ "name":"John", "age":30, "city":"New York"}'

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

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');

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

مثال

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
</script>

JSON از سمت سرور

شما می‌توانید با استفاده از یک درخواست AJAX از سرور یک JSON را تقاضا کنید.

تا زمانی که نتیجه در سرور در قالب JSON نوشته می‌شود، شما می‌توانید رشته متنی دریافتی را به یک شیء جاوااسکریپت تبدیل کنید.

مثال

استفاده از XMLHttpRequest برای دریافت اطلاعات از سمت سرور:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myObj.name;
  }
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();

نگاهی به فایل json_demo.txt بیندازید.

آرایه همانند JSON

زمانی که از متدJSON.parse()روی یک JSON مشتق شده از یک آرایه استفاده می‌کنید، متد به جای برگرداندن یک شیء جاوااسکریپت، یک ارایه جاوااسکریپت را برمی‌گرداند.

مثال

JSON ی که از سرور برگردانده شده یک آرایه است:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myArr = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myArr[0];
  }
};
xmlhttp.open("GET", "json_demo_array.txt", true);
xmlhttp.send();


نگاهی به فایل json_demo_array.txt بیندازید.

خطاها


تبدیل تاریخ و زمان

استفاده از اشیاء تاریخ و زمان در JSON مجاز نیست.

اگر شما می‌خواهید که یک تاریخ را بنویسید، می‌بایست آن را به صورت متنی (به انگلیسی: String) بنویسید.

شما بعداً می‌توانید آن را دوباره به یک شیء تاریخ و زمان تبدیل کنید:

مثال

تبدیل یک رشته متنی به یک شیء تاریخ و زمان:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
obj.birth = new Date(obj.birth);

document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

و یا شما می‌توانید از پارامتر دوم تابعJSON.parse()که reviver نامیده می‌شود استفاده کنید.

پارامتر reviver تابعی است که هر ویژگی را قبل از برگرداندن آن بررسی می‌کند.

مثال

تبدیل یک رشته متنی به یک شیء تاریخ و زمان با استفاده از پارامتر reviver تابع:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text, function (key, value) {
  if (key == "birth") {
    return new Date(value);
  } else {
    return value;
  }
});

document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

تبدیل توابع

استفاده از توابع در JSON مجاز نیست.

اگر شما می‌خواهید یک تابع را بنویسید، شما می‌بایست آن را به صورت یک رشته متنی بنویسید.


شما می‌توانید بعداً آن را به یک تابع تبدیل کنید:

مثال

تبدیل یک رشته متنی به یک تابع:

var text = '{ "name":"John", "age":"function () {return 30;}", "city":"New York"}';
var obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");

document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();


سازگاری با مرورگرها

تابعJSON.parse()در تمامی مرورگرها و آخرین ورژن استاندارد ECMAScript (جاوااسکریپت) وجود دارد.

اعداد موجود در جدول زیر اولین ورژن مرورگرهایی که به طور کامل از تابعJSON.parse()پشتیبانی می‌کنند را مشخص می‌کند:

اپرا سافاری فایرفاکس IE/Edge کروم
۱۰٫۰ ۴ ۳٫۵ ۸٫۰ بله

برای مرورگرهای قدیمی‌تر، یک کتابخانه جاوااسکریپت در این آدرس در دسترس است.

منابع آموزشی