متد JSON.parse()
یک استفاده رایج از JSON برای تبادل داده از یا با یک وب سرور است. [۱]
هنگامی که دادهای از یک وب سرور دریافت میکنید، داده همیشه یک رشته متنی است.
داده را با استفاده از متد JSON.parse()
تبدیل کنید و داده به یک شیء جاوا اسکریپت تبدیل میشود.
مثال - تبدیل JSON
تصور کنید ما این متن را از یک وب سرور دریافت کردهایم:
'{ "name":"John", "age":30, "city":"New York"}'
از تابع JSON.parse()
برای تبدیل این متن به یک شیء جاوا اسکریپت استفاده کنید:
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
از این شیء جاوا اسکریپت در صفحه خود استفاده کنید:
مثال
1 <p id="demo"></p>
2
3 <script>
4 document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
5 </script>
JSON از سمت سرور
شما میتوانید با استفاده از یک درخواست AJAX از سرور یک JSON را تقاضا کنید.
تا زمانی که نتیجه در سرور در قالب JSON نوشته میشود، شما میتوانید رشته متنی دریافتی را به یک شیء جاوا اسکریپت تبدیل کنید.
مثال
استفاده از XMLHttpRequest برای دریافت اطلاعات از سمت سرور:
1 var xmlhttp = new XMLHttpRequest();
2 xmlhttp.onreadystatechange = function() {
3 if (this.readyState == 4 && this.status == 200) {
4 var myObj = JSON.parse(this.responseText);
5 document.getElementById("demo").innerHTML = myObj.name;
6 }
7 };
8 xmlhttp.open("GET", "json_demo.txt", true);
9 xmlhttp.send();
نگاهی به فایل json_demo.txt بیندازید.
آرایه همانند JSON
زمانی که از متد JSON.parse()
روی یک JSON مشتق شده از یک آرایه استفاده میکنید، متد به جای برگرداندن یک شیء جاوا اسکریپت، یک ارایه جاوا اسکریپت را برمیگرداند.
مثال
JSON ی که از سرور برگردانده شده یک آرایه است:
1 var xmlhttp = new XMLHttpRequest();
2 xmlhttp.onreadystatechange = function() {
3 if (this.readyState == 4 && this.status == 200) {
4 var myArr = JSON.parse(this.responseText);
5 document.getElementById("demo").innerHTML = myArr[0];
6 }
7 };
8 xmlhttp.open("GET", "json_demo_array.txt", true);
9 xmlhttp.send();
نگاهی به فایل json_demo_array.txt بیندازید.
خطاها
تبدیل تاریخ و زمان
استفاده از اشیاء تاریخ و زمان در JSON مجاز نیست.
اگر شما میخواهید که یک تاریخ را بنویسید، میبایست آن را به صورت متنی (به انگلیسی: String) بنویسید.
شما بعداً میتوانید آن را دوباره به یک شیء تاریخ و زمان تبدیل کنید:
مثال
تبدیل یک رشته متنی به یک شیء تاریخ و زمان:
1 var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
2 var obj = JSON.parse(text);
3 obj.birth = new Date(obj.birth);
4
5 document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
و یا شما میتوانید از پارامتر دوم تابع JSON.parse()
که reviver نامیده میشود استفاده کنید.
پارامتر reviver تابعی است که هر ویژگی را قبل از برگرداندن آن بررسی میکند.
مثال
تبدیل یک رشته متنی به یک شیء تاریخ و زمان با استفاده از پارامتر reviver تابع:
1 var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
2 var obj = JSON.parse(text, function (key, value) {
3 if (key == "birth") {
4 return new Date(value);
5 } else {
6 return value;
7 }
8 });
9
10 document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
تبدیل توابع
استفاده از توابع در JSON مجاز نیست.
اگر شما میخواهید یک تابع را بنویسید، شما میبایست آن را به صورت یک رشته متنی بنویسید.
شما میتوانید بعداً آن را به یک تابع تبدیل کنید:
مثال
تبدیل یک رشته متنی به یک تابع:
1 var text = '{ "name":"John", "age":"function () {return 30;}", "city":"New York"}';
2 var obj = JSON.parse(text);
3 obj.age = eval("(" + obj.age + ")");
4
5 document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
eval()
برای تبدیل دوباره آنها به توابع استفاده کنید.سازگاری با مرورگرها
تابع JSON.parse()
در تمامی مرورگرها و آخرین نسخه استاندارد ECMAScript (جاوا اسکریپت) وجود دارد.
اعداد موجود در جدول زیر اولین نسخه مرورگرهایی که به طور کامل از تابع JSON.parse()
پشتیبانی میکنند را مشخص میکند:
![]() |
![]() |
![]() |
![]() |
![]() |
بله | ۸٫۰ | ۳٫۵ | ۴ | ۱۰٫۰ |
برای مرورگرهای قدیمیتر، یک کتابخانه جاوا اسکریپت به آدرس https://github.com/douglascrockford/JSON-js در دسترس است.
منابع آموزشی