با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش JavaScript در خدمت شما دوستان هستیم . در این جلسه قصد داریم به آموزش JSON در جاوا اسکریپت JavaScript و معرفی JSON بپردازیم.
JSON (JavaScript Object Notation) یک ساختار برای ذخیره و تبادل اطلاعات می باشد.
داده ها در هنگام تبادل بین مرورگر و سرور فقط می توانند به صورت متن Text باشند.
JSON به صورت متن می باشد و می توانیم هر شی جاوا اسکریپت را به JSON تبدیل کنیم و JSON را به سرور ارسال کنیم.
همچنین می توانیم هر JSON را که از سرور دریافت کرده ایم را به شی جاوا اسکریپت تبدیل کنیم.
با این روش می توانیم بدون هیچ گونه پیچیدگی و تجزیه و تبدیلی با داده ها مانند اشیا جاوا اسکریپت کار کنیم.
اگر داده هایی ذخیره شده در شی جاوا اسکریپت دارید، می توانید آن شی را تبدیل به JSON کرده و آن را به سرور ارسال کنید:
1 2 3 | var myObj = {"name":"John", "age":31, "city":"New York"}; var myJSON = JSON.stringify(myObj); window.location = "demo_json.php?x=" + myJSON; |
اگر داده هایی را در قالب JSON دریافت کردید، می توانید آن را به شی جاوا اسکریپت تبدیل کنید:
1 2 3 | var myJSON = '{"name":"John", "age":31, "city":"New York"}'; var myObj = JSON.parse(myJSON); document.getElementById("demo").innerHTML = myObj.name; |
هنگام ذخیره اطلاعات، بدون توجه به اینکه آن را کجا ذخیره می کنید، داده ها با فرمت متنی text ذخیره خواهند شد.
JSON این امکان را به ما می دهد تا داده ها را به صورت متن ذخیره کنیم:
1 2 3 4 5 6 7 8 9 | //Storing data: myObj = {"name":"John", "age":31, "city":"New York"}; myJSON = JSON.stringify(myObj); localStorage.setItem("testJSON", myJSON); //Retrieving data: text = localStorage.getItem("testJSON"); obj = JSON.parse(text); document.getElementById("demo").innerHTML = obj.name; |
همانطور که گفتیم JSON یک فرمت تبادل اطلاعات آسان و سبک هست که توسط هر زبان برنامه نویسی قابل استفاده است.
در هر زبان برنامه نویسی معمولا توابع از پیش تعریف شده ای برای کار با JSON وجود دارد.
جلسه معرفی و آموزش JSON در جاوا اسکریپت JavaScript نیز به پایان رسید.
در جلسه بعد به ساختار دستوری JSON خواهیم پرداخت. با ما همراه باشید
zeynab
سلام
در رابطه با JSON.parse هم که گفتین در بالا-کلمه object رو واسه من تو خروجی چاپ می کنه
نمی دونم ولی چرا
صادق
این کار دلایل مختلفی داده و من تا کد رو نبینم نمیتونم جواب قطعی بدم.
معمولا زمانی object رو به شما برمیگردونه که در parse کردن شی یا آرایه متغیری که مقدار json.parse رو درون اون میریزید، مشکل داشته باشید.
برای مثال مقداری که json.parse بر میگردونه، آرایه هست اما شما با اون مانند یک شی رفتار میکنید.
مثال:
var str = [{ "key1":"value1" , "key2":"value2"}];
var myResponse = JSON.parse(str);
console.log(myResponse.key1); // اشتباه
console.log(myResponse[0].key1); // درست
zeynab
سلام
خیلی ممنون از راهنمایی خوبتون اقا صادق
من مشکل object ام حل شد با راهنمایی خوب شما
دقیقا آرایه بود و من مثل شی باهاش رفتار می کردم
فقط یه سوال دارم در زمینه ی سوال دومم که مطرح کرده بودم
و اون اینکه من الان یه سری مارکر دارم روی نقشه ام که از پایگاه داده خوندم و زدم
الان میخام روی هر ماکر کلیک می کنم.رنگش رو واسه من ذخیره کنه
من از mysqli دارم استفاده می کنم
دقیقا از اطلاعات کجا می تونم برای کارم کمک بگیرم
ممنون میشم در این رابطه هم راهنماییم کنین…..
صادق
سلام. خواهش میکنم.
والا تخصص اصلی من توسعه اندروید هست و سمت سرور مخصوصا php زیاد کار نکردم.
به هر حال فکر میکنم شما مارکر ها رو که از پایگاه داده میخونی، به اطلاعاتش از جمله رنگ دسترسی داشته باشی.
برای ذخیره کردن رنگ هم فک میکنم باید از رویداد کلیک (click event) مارکر استفاده کنید و کد های ذخیره سازی در پایگاه رو اونجا بنویسید.
اگه از گوگل مپ استفاده میکنید نگاهی به لینک زیر بندازید:
https://developers.google.com/maps/documentation/javascript/markers
zeynab
یه سوال دیگه ام دارم
من میخام از نقشه ام توصفحه ی وبم در یه بازه ی زمانی مشخص مثلا هر پنج دقیقه اسکرین شات بگیرم و تو پایگاه داده ام ذخیره کنم
میخاستم ببینم آیا امکانش هست ؟؟لطفا راهنماییم کنین…..
صادق
برای اجرا و تکرار کد در یک بازه زمانی مشخص باید از توابعی مثل interval استفاده کنی.
برای اسکرین شات گرفتن هم اگه از گوگل مپس استفاده میکنی، به این لینک یه نگاه بنداز.
zeynab
سلام مجدد
خیلی ممنون از شما و راهنماییتون
واقعا خیلی لطف کردین…………
صادق
سلام.
خواهش میکنم
شهرزاد
باسلام
من کدی نوشتم که صفحه ام رو رفرش می کنه و ازش اسکرین می گیره . اما چون اطلاعات سایتم داره بروزرسانی میشه نیار دارم که هر یک دقیقه واسم اسکرین بگیره و تصویر رو ذخیره بکنه. الان همه ی این کارها داره انجام میشه و تنها مشکلی که دارم اینه که من فقط میتونم دستی تصویری که ایجاد میشه رو ذخیره کنم . در صورتی که من نیاز دارم به صورت اتوماتیک یک مسیر بدم و و عکس ها تا زمانی که کد داره اجرا میشه تو اون مسیر ریخته بشه خودش به صورت خودکار .اما هر کاری کردم نتونستم این ذخیره ی تصویر رو اتوماتیک کنم .ممنون میشم کسی راهنماییم کنه.خیلی ممنونم…..
صادق
سلام
با زبان جاوا اسکریپت نمیشه کد هایی که مربوط به سمت سرور هستند رو اجرا کرد. (مثل همین ذخیره فایل روی سرور)
بنابراین بهترین راه حل اینه که تصویر ایجاد شده رو به یک فایل php بفرستید و کار های ذخیره تصویر رو با php انجام بدید