استفاده رايج ازJSON براي تبادل داده با يك وب سروراست . هنگام دريافت داده از يك وب سرور، داده ها هميشه يك رشته هستند.
متدJSON.parsr( ) داده هاي در يافتي را تجزيه وبه شئ جاوااسكريپت تبديل مي نمايد.
مثال ـ تجزيه جسون(Parsing JSON)
تصور كنيد كه متن زير از سرور دريافت شده است
'{"name":"John", "age":30, "city":"New York"}'
براي تبديل آن به شئ جاوااسكريپت از متدJSON.parse( )مطابق زير استفاده ميكنيم
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
مطمئن شويد كه متن با فرمت جسن باشد، در غير اينحالت با يك خطاي نحو مواجه مي شويد.
استفاده از شئ جاوااسكريپت در صفحه مطابق زير:
<p id="demo"></p> <script> document.getElementById("demo").innerHTML = obj.name; </script >
هنگام استفاده از متدJSON.parse( ) براي تجزيه آرايه جسوني در جاوااسكريپت، بجاي شئ يك آرايه جاوااسكريپتي برگشت ميدهد.
مثال ـ تجزيه آرايه جسوني
const text = '["Ford", "BMW", "Audi", "Fiat"]'; const myArr = JSON.parse(text);
شئ تاريخ در داده جسوني مجاز نيست .اگر تاريخ لازم است ، آنرا بصورت رشته در جسون بگنجانيد. بعدا ميتوانيد آنرا بيك شئ تاريخ تبديل كنيد.
مثال ـ تبديل يك رشته به تاريح
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}'; const obj = JSON.parse(text); obj.birth = new Date(obj.birth); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
يا ميتوان از پارامتر دوم متدJSON.parse( ) بنامreviver استفاده كرد .در اين پارامتر تابعي است كه هر ويژگي را قبل از برگرداندن مقدار بررسي ميكند.
مثال ـ تبديل رشته تاريخ با استفاده از تابع درreviver
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}'; const 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;
توابع در داده جسون مجاز نيستند .اگر لازم است كه در آنها باشند، بايد بعنوان رشته قرار گيرند .ميتوان آن رشته را بعدا بيك تابع تبديل كرد.
مثال ـ تبديل رشته بيك تابع
const text = '{"name":"John", "age":"function () {return 30;}", "city":"New York"}'; const obj = JSON.parse(text); obj.age = eval("(" + obj.age + ")"); document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
بايد از گنجاندن تابع در داده جسون خودداري كرد .توابع دامنه خود را از دست ميدهند، و براي
تبديل مجدد آنها بايد از تابعeval( ) استفاده كرد .