icofx-icon
معرفی برنامه کاربردی Icofx(طراحی آیکن)
دی ۱۱, ۱۳۹۵
معرفی برنامه کاربردی Razor SQL
معرفی برنامه کاربردی Razor SQL
دی ۲۰, ۱۳۹۵
داده های JSON

داده های JSON

در این پست قصد داریم در ادامه آموزش های اندروید و کتابخانه Volley مبحث داده های JSON در اندروید یا اطلاعات جیسون را معرفی کنیم چون به طور قطع در راستای برنامه نویسی اندروید با این اطلاعات سروکار خواهیم داشت. مخصوصا زمانی که بخواهیم به وب سرور متصل شویم و اطلاعات را با سرور ردو بدل کنیم زیرا تمامی اطلاعات بصورت 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 دیدگاه

  1. rreza گفت:

    تشکر و دورود بر شما. حقیقتا فصاحت و درک عمیق شما از موضوعات کاملا هویدا است . بسیار استفاده نمودم همچنین اموزش های شما را دنبال خواهم نمود

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *