استفاده معمول از JSON مبادله داده ها به / از سرور وب است.
هنگام دریافت داده از سرور وب ، داده همیشه یک رشته است.
داده ها را با آنها تجزیه کنید JSON.parse()
، و داده ها به یک شی JavaScript تبدیل می شوند.
مثال – تجزیه JSON
تصور کنید این متن را از یک سرور وب دریافت کرده ایم:
'{"name":"John", "age":30, "city":"New York"}'
از تابع JavaScript JSON.parse()
برای تبدیل متن به یک شی JavaScript استفاده کنید:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
مطمئن شوید متن در قالب JSON باشد ، در غیر این صورت با خطای نحوی مواجه خواهید شد.
از شی JavaScript در صفحه خود استفاده کنید:
مثال
<p id="demo"></p> <script> document.getElementById("demo").innerHTML = obj.name; </script>
آرایه به عنوان JSON
هنگام استفاده از JSON.parse()
یک JSON مشتق شده از یک آرایه ، این روش به جای یک شی JavaScript ، آرایه JavaScript را برمی گرداند.
مثال
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
استثناها
تجزیه تاریخ ها
اشیا Date تاریخ در JSON مجاز نیستند.
اگر می خواهید یک تاریخ وارد کنید ، آن را به عنوان یک رشته بنویسید.
بعداً می توانید دوباره آن را به یک شی تاریخ تبدیل کنید:
مثال
یک رشته را به تاریخ تبدیل کنید:
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;
توابع تجزیه
توابع در JSON مجاز نیستند.
اگر لازم است تابعی را وارد کنید ، آن را به صورت رشته بنویسید.
بعداً می توانید دوباره آن را به یک تابع تبدیل کنید:
مثال
یک رشته را به یک تابع تبدیل کنید:
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();
شما باید از استفاده از توابع در JSON خودداری کنید ، عملکردها دامنه خود را از دست می دهند و eval()
برای تبدیل مجدد آنها به توابع باید از آنها استفاده کنید.