()parse در JSON
یادگیری JSON()Parse در JSON
استفاده معمول از JSON برای تبادل اطلاعات به / از یک وب سرور است.
هنگام دریافت داده ها از یک وب سرور، داده ها همیشه یک رشته هستند.
داده ها را با JSON.parse () تجزیه می شوند و داده ها به یک شیء جاوا اسکریپت تبدیل می شوند.
مثال- تجزیه JSON
تصور کنید ما این متن را از یک وب سرور دریافت کردیم:
از جاوا اسکریپت JSON.parse () برای تبدیل متن به یک جاوا اسکریپت استفاده کنید:
اطمینان حاصل کنید که متن در قالب JSON نوشته شده است، در غیر اینصورت یک خطای ساختاری دریافت خواهید کرد.
از شیء جاوا اسکریپت در صفحه خود استفاده کنید:
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
</script>
مشاهده مثالJSON از سوی سرور
شما می توانید با استفاده از درخواست AJAX JSON را از سرور درخواست کنید
تا زمانی که پاسخ از سرور در قالب JSON نوشته شده است، می توانید رشته را به یک جاوا اسکریپت تجزیه کنید.
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
هنگام استفاده از JSON.parse () در 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 مجاز نیستند.
اگر شما نیاز به یک تاریخ دارید، آن را به عنوان یک رشته بنویسید.
بعدا می توانید آن را به یک شی تاریخ تبدیل کنید:
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 یک تابع است که قبل از بازگشت مقدار هر مقدار را بررسی می کند.
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 اجتناب کنید، توابع دامنه خود را از دست می دهند و شما مجبورید از eval () برای تبدیل آنها به توابع استفاده کنید.
پشتیبانی مرورگرها
عملکرد JSON.parse () در تمام مرورگرهای اصلی و در آخرین استاندارد ECMAScript (جاوا اسکریپت) شامل می شود:
برای مرورگرهای قدیمی، یک کتابخانه جاوا اسکریپت در https://github.com/douglascrockford/JSON-js موجود است.
نظرات