JSON.parse()

استفاده عادی JSON برای انتقال داده با سرور وب است.

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

از طریق JSON.parse() داده‌ها را تحلیل کنید، این داده‌ها به عنوان شیء JavaScript تبدیل خواهند شد.

مثال – تحلیل JSON

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

'{ "name":"Bill Gates", "age":62, "city":"Seattle"}'

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

var obj = JSON.parse('{ "name":"Bill Gates", "age":62, "city":"Seattle"}');

مطمئن شوید که این متن به فرمت JSON نوشته شده است، در غیر این صورت خطای نحوی رخ می‌دهد.

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

مثال

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

شما باید شخصاً امتحان کنید

JSON از سرور

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

اگر پاسخ سرور به فرمت JSON نوشته شده باشد، می‌توانید این رشته را به شیء JavaScript تبدیل کنید.

مثال

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

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    اگر (this.readyState == 4 && this.status == 200) {
        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 استخراج شده از آرایه JSON.parse() این روش یک آرایه JavaScript را برمی‌گرداند، نه یک شیء JavaScript.

مثال

JSON که از سرور برمی‌گردد یک آرایه است:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    اگر (this.readyState == 4 && this.status == 200) {
        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 شیء تاریخ مجاز نیستند.

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

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

مثال

تغییر رشته به تاریخ:

var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';
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":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';
var obj = JSON.parse(text, function (key, value) {
    اگر  (key == "birth") {
        بازگشتی جدید Date(value);
    } else {
         بازگشتی ارزش;
   });
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

شما باید شخصاً امتحان کنید

تفسیر فرمول

در JSON فرمول‌ها مجاز نیستند.

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

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

مثال

بازیابی رشته به وسیله فرمول:

var text = '{ "name":"Bill Gates", "age":"function () {return 62;}", "city":"Seattle"}';
var obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +  obj.age();

شما باید شخصاً امتحان کنید

شما باید از استفاده از توابع در JSON خودداری کنید، زیرا توابع خود را از محدوده خود از دست می‌دهند و شما نیاز به استفاده از eval() آنها را به توابع تبدیل کنید.

پشتیبانی مرورگر

همه مرورگرهای اصلی و استانداردهای ECMAScript (JavaScript) جدیدتر شامل JSON.parse() توابع:

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

بله 8.0 3.5 4.0 10.0

برای مرورگرهای قدیمی‌تر، کتابخانه‌های JavaScript در آدرس‌های زیر قابل دسترسی هستند:

https://github.com/douglascrockford/JSON-js