JSON.parse()
- صفحه قبلی نوعهای داده JSON
- صفحه بعدی سریالسازی JSON
استفاده عادی 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
برای استفاده از 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 شیء تاریخ مجاز نیستند.
اگر نیاز به شامل کردن تاریخ دارید، آن را به عنوان رشته بنویسید.
بعداً میتوانید آن را به شیء تاریخ تبدیل کنید:
مثال
تغییر رشته به تاریخ:
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 در آدرسهای زیر قابل دسترسی هستند:
- صفحه قبلی نوعهای داده JSON
- صفحه بعدی سریالسازی JSON