در این پست قصد داریم در ادامه آموزش های اندروید و کتابخانه Volley مبحث داده های JSON در اندروید یا اطلاعات جیسون را معرفی کنیم چون به طور قطع در راستای برنامه نویسی اندروید با این اطلاعات سروکار خواهیم داشت. مخصوصا زمانی که بخواهیم به وب سرور متصل شویم و اطلاعات را با سرور ردو بدل کنیم زیرا تمامی اطلاعات بصورت JSON درخواهند آمد. پس آشنایی با این فرمت از ملزوم ملزومات است!
برای تعریف داده های JSON در اندروید یا Javascript Object Notation در مبحث برنامه نویسی اندروید درواقع داده هایی هستند که از وب سرور به برنامه کاربردی کاربر ارسال میشوند که قطعا مدیریت این داده ها به عهده برنامه نویس خواهد بود. چون داده خامی که از طریق وب سرور ارسال میشود صورت جالبی برای نمایش به کاربر ندارد و بهتر است از طریق برنامه نویسی آن را مرتب کرده و سپس به کاربر نمایش داد.
برای مثال آرایه زیر یک مقدار جیسون برگشتی از وب سرور است
” Persons ” : [
{ ” firstName ” : ” Ali ” , ” lastName ” : ” Roham ” } ,
{ ” firstName ” : ” Reza ” , ” lastName ” : ” Miladi ” } ,
{ ” firstName ” : ” Ahmad ” , ” lastName ” : ” Keyvan ” }
]
آرایه Persons که با [ ] مشخص میشود و اشیا آرایه درون این علامت قرار میگیرند.
اشیا با { } مشخص شده و مقادیر فیلدها درون این علامت تعیین میشود برای مثال
فیلد firstname با علامت : مقدار Ali را به خود گرفته سپس با یک , فیلد بعدی که lastName باشد مانند قبل با علامت : مقدار دهی کرده و به همین صورت اشیا بعدی.
توجه کنید که تمامی مقادیر چه عدد صحیح و چه رشته ای درون “ “ قرار گرفته.
در برنامه نویسی جاوا برای اندروید ما از اطلاعات جیسون استفاده بسیار زیادی میکنیم چون برای امنیت برنامه کاربردی خود بهتر است بانک متصل به برنامه را متصل به وب سرور درنظر بگیریم و نه local پس برای ارتباط برقرار کردن با سرور نیز ما نیازمند دوستی با فرمت جیسون هستیم!!
با استفاده از دستور JsonArrayRequest میتوان درخواست دریافت آرایه جیسون را از وب سرور کرد.
برای مثال به تکه کد زیر دقت کنید(از کتابخانه Volley برای این مثال استفاده شده برای دریافت آموزش این کتابخانه میتوانید به پست مربوط به آن مراجعه کنید)
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(READ_URL, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { try { firstNAme = new String[response.length()]; lastName = new String[response.length()]; for (int i = 0; i < response.length(); i++) { JSONObject jsonObject = (JSONObject) response.get(i); String firstNAme = jsonObject.getString("firstNAme "); String lastName = jsonObject.getString("lastName "); firstNAmes[i] = firstNAme; lastNames[i] = lastName; } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("VolleyError", "Having Error"); } } );
در مثال فوق میتوان دید کلاس JsonArrayRequest دارای دو پارامتر READ_URL(آدرس مربوط به صفحه php که دستورات خواندن از وب سرور را در خود دارد) و new Response.Listener JSONArray(که دو حالت چراغ سبز یا گرفتن پاسخ از وب سرور و چراغ قرمز یا دریافت خطا ومشخص کردن واکنش برنامه به هردو این حالت)
**** قابل ذکر است که این کلاس constructor های دیگر با انواع پارامتر های دیگر را نیز دارد که در صورت نیاز میتوان از آنها استفاده کرد.
برای مشاهده جزییات بیشتر از این کلاس و یا هرکلاس دیگر در جاوا میتوانید با نگه داشتن کلید CTRL و کلیک برروی هر مشخصه به جزییات بیشتر آن دسترسی پیدا کنید****
Response درواقع همان آرایه جیسونی است که در بالا نمایش داده شد پس به راحتی میتوان با گذاشتن یک حلقه for به اندازه طول(()length) آرایه جیسون یکی یکی اشیا آرایه را بدین صورت ;(JSONObject jsonObject = (JSONObject) response.get(iبیرون کشید و مقادیر فیلدهای آن شی را درون متغیر دیگری قرار داد تا در ادامه از آنها استفاده کرد
درصورت بروز خطا از سرور نیز (()onErrorListener) یک پیغام نمایش میدهد.
1 Comment
تشکر و دورود بر شما. حقیقتا فصاحت و درک عمیق شما از موضوعات کاملا هویدا است . بسیار استفاده نمودم همچنین اموزش های شما را دنبال خواهم نمود