متد JSON.stringify()

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو

یک استفاده رایج از JSON تبادل داده با وب سرور است. [۱]

زمان ارسال داده به یک وب سرور، داده‌ها می‌بایست به صورتی رشته‌های متنی باشند.

با استفاده از متد JSON.stringify() یک شیء جاوا اسکریپت را به یک رشته متنی تبدیل کنید.

تبدیل یک شیء جاوا اسکریپت به یک رشته متنی

تصور کنید ما شیء زیر را در جاوا اسکریپت داریم:

var obj = { name: "John", age: 30, city: "New York" };

از متد JSON.stringify() برای تبدیل آن به یک رشته متنی استفاده کنید.

var myJSON = JSON.stringify(obj);
نتیجه یک رشته متنی خواهد بود که از ساختار JSON پیروی می‌کند.

myJSON حالا یک رشته متنی است، و برای ارسال به سمت سرور آماده است:

مثال

1var obj = { name: "John", age: 30, city: "New York" };
2var myJSON = JSON.stringify(obj);
3document.getElementById("demo").innerHTML = myJSON;


مشاهدهٔ نتیجه


شما در مورد نحوه ارسال JSON به سمت سرور در فصل آینده مطالبی را خواهید آموخت.

تبدیل یک آرایه جاوا اسکریپت به رشته متنی

تبدیل کردن آرایه‌های جاوا اسکریپت به رشته‌های متنی نیز ممکن است:

تصور کنید ما آرایه زیر را در جاوا اسکریپت داریم:

var arr = [ "John", "Peter", "Sally", "Jane" ];

از تابع JSON.stringify() برای تبدیل آن به یک رشته متنی استفاده کنید.

var myJSON = JSON.stringify(arr);
نتیجه یک رشته متنی خواهد بود که از شیوه نوشتار JSON پیروی می‌کند.

myJSON هم اکنون یک رشته متنی است و آماده ارسال به سمت سرور است:

مثال

1var arr = [ "John", "Peter", "Sally", "Jane" ];
2var myJSON = JSON.stringify(arr);
3document.getElementById("demo").innerHTML = myJSON;


مشاهدهٔ نتیجه


شما در مورد نحوه ارسال JSON به سمت سرور در فصل آینده مطالبی را خواهید آموخت.

خطاها

تبدیل تاریخ و زمان به رشته های متنی

استفاده از شی‌های تاریخ و زمان در JSON، مجاز نیست. تابع JSON.stringify() هر گونه شیء تاریخ و زمانی را به رشته‌های متنی تبدیل می‌کند.

مثال

1var obj = { name: "John", today: new Date(), city : "New York" };
2var myJSON = JSON.stringify(obj);
3
4document.getElementById("demo").innerHTML = myJSON;


مشاهدهٔ نتیجه


شما می‌توانید رشته متنی را در دریافت کننده دوباره به یک شیء تاریخ و زمان تبدیل کنید.

توابع تبدیل به رشته متنی

در JSON، استفاده از توابع به عنوان مقادیر شیء مجاز نیست.

متد JSON.stringify() هر گونه تابعی را از یک شیء جاوا اسکریپت (هم کلید و هم مقدار آن را) پاک خواهد کرد:

مثال

1var obj = { name: "John", age: function () {return 30;}, city: "New York"};
2var myJSON = JSON.stringify(obj);
3
4document.getElementById("demo").innerHTML = myJSON;


مشاهدهٔ نتیجه


این امر می‌تواند در صورتی که شما توابع خود را قبل از اجرای متد JSON.stringify() به رشته‌های متنی تبدیل کنید، اتفاق نیفتد.

مثال

1var obj = { name: "John", age: function () {return 30;}, city: "New York"};
2var myJSON = JSON.stringify(obj);
3
4document.getElementById("demo").innerHTML = myJSON;


مشاهدهٔ نتیجه


شما می‌بایست از استفاده توابع در JSON پرهیز کنید، توابع ناحیه کد (Scope) خود را تغییر می‌دهند و شما مجبور خواهید بود برای تبدیل دوباره آنها به توابع از متد eval() استفاده کنید.

سازگاری با مرورگرها

تابع JSON.stringify() در تمامی مرورگرها و در آخرین نسخه استاندارد ECMAScript (جاوا اسکریپت) وجود دارد.

اعداد موجود در جدول زیر، مشخص کننده اولین نسخه مرورگر هستند که به طور کامل از تابع JSON.stringify() پشتیبانی می‌کند:

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۸٫۰ ۳٫۵ ۴ ۱۰٫۰



منابع آموزشی