در این مقاله نحوه بازخوانی اطلاعات دریافت شده از سرور توسط جیسون را فراخواهیم گرفت
استفاده غالب ازجیسون برای تبادل داده از سرور است.
وقتی که داده ها از سرور دریافت شد، اغلب داده ها بصورت رشته است.
دستور JSON.parse() قادر است که این رشته ها را به اشیاء جاوا اسکریپت تبدیل کند.
مثال برای Parsing 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>
مشاهده نتیجه
جیسون از سمت سرور
شما میتوانید برای دریافت داده توسط جیسون از سمت سرور یک درخواست آیجکس بفرستید.
تا زمانیکه پاسخ های دریافت شده از سرور با فرمت جیسون نوشته شده باشند. شما میتوانید آنها را به اشیاء جاوا اسکریپت تبدیل کنید.
مثال
استفاده از 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.parse() محتوای یک فایل جیسون را دریافت می کنید.این متد بجای شئی ،برای شما یک آرایه بازمیگرداند.
جیسون یک آرایه را از سرور فراخوانی کرده است:
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 نگاهی بیاندازید.
استثناء ها
بازگردانی تاریخ
شیئ تاریخ در جیسون امکان نمایش ندارد.
اگر میخواهید یک تاریخ را بازگردانید، آنرا بصورت متن بازخوانی کنید.
بعدا میتوان آن را به یک شیئ تاریخ تبدیل کرد.
مثال
تبدیل رشته به تاریخ
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;
مشاهده نتیجه
شما میتوانید پارامتر دوم را با فراخوانی عملگر reviver در JSON.parse() به کار بگیرید.
پارامتر 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;
مشاهده نتیجه
بازگردانی عملگرها
جیسون امکان بازخوانی عملگرها را ندارد.
اگر شما میخواهید که در جیسون از عملگر استفاده کنید ، عملگر را بصورت متن تایپ کنید.
شما میتوانید عملگر را مجددا به یک عملگر تبدیل کنید.
مثال
تبدیل یک رشته به یک عملگر:
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();
مشاهده نتیجه
شما باید از بکارگیری عملگرها در جیسون اجتناب کنید.عملگرها قابلیت خود را در جیسون ازدست میدهند و برای تبدیل آنها به عملگر باید از eval() استفاده کرد.
پشتیبانی مرورگرها
عملگر JSON.parse() توسط تمام مرورگرهای معرف پشتیبانی میشود ،
لیست مروگرهایی که از این ویژگی پشتیبانی می کنند:
Firefox 3.5
Internet Explorer 8
Chrome
Opera 10
Safari 4
براي بهره مندي از مشاوره تخصصي در زمینه طراحی سایت در کرج با شرکت سارگون تماس بگيريد