مشخصات پروژه
-
426
-
0.0
-
8928
-
0
-
0
آموزش تجزیه نمودن یک فایل JSON در اندروید
در این مقاله قصد داریم تا نحوه کار کردن با فایل های JSON در اندروید را بصورت تصویری در محیط برنامه نویسی Eclipse به شما دانشجویان محترم آموزش دهیم...
دوره آموزش آندروید
رمز فایل :tahlildadeh.com
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
با عرض سلام و خسته نباشید به شما دانشجویان محترم آموزشگاه تحلیلگر داده ها. در این مقاله قصد داریم تا نحوه کار کردن با فایل های JSON در اندروید را بصورت تصویری در محیط برنامه نویسی Eclipse به شما دانشجویان محترم آموزش دهیم.
اهداف پروژه :
در این پروژه ما قصد داریم اهداف زیر را پیاده سازی نماییم:
تجزیه نمودن یک فایل JSON
واکشی اطلاعات تجزیه شده و نمایش آنها به کاربر
برای شروع کار ابتدا می بایست یک پروژه جدید در محیط Eclipse ایجاد نماییم. برای این منظور از منوی File زیر منوی New و سپس زیر منوی Android Application Project را انتخاب می نماییم. (شکل 1)
شکل 1
همچنین برای ساده تر شدن و بالا بردن سرعت کار می توانید از منوی ابزار ها، منوی New و سپس Android Application Project را انتخاب نمایید. (شکل 2)
شکل 2
با انجام هر دو روش پنجره جدیدی با عنوان New Android Application باز می گردد. (شکل 3)
شکل 3
در این پنجره قسمت هایی وجود دارد که در زیر به توضیح آنها می پردازیم :
Application Name: در این فیلد می بایست نام برنامه خود را وارد نمایید. توجه داشته باشید که هر مقداری را که در این فیلد وارد نمایید، برنامه با این نام در لیست برنامه های نصب شده قرار خواهد گرفت.
در این فیلد می توانید یک رشته فارسی نیز وارد نمایید.
Project Name: در این فیلد می بایست نام کلی پروژه خود را وارد نمایید و بهتر است که یک رشته با معنا و مرطبت با برنامه خود وارد نمایید.
زمانی که مقدار فیلد Application Name را وارد می نمایید، فیلد Project Name نیز بصورت خودکار همان نام را وارد می نماید. توجه داشته باشد که اگر فیلد Application Name را با یک رشته فارسی مقداردهی نمودید، برای جلوگیری از خطاها می بایست رشته فارسی تولید شده در فیلد Project Name را با یک رشته معادل انگلیسی جایگزین نمایید.
Package Name: در این فیلد می بایست پکیج پروژه خود را تعیین نمایید که بهتر است آدرس وب سایت خود را بدون درج http و www و بصورت از آخر به اول و به همراه نام وارد شده در فیلد Project Name وارد نمایید. این نوع مقداردهی به برنامه های مارکت نظیر بازار و Google Paly این امکان را میدهد تا زمانی که نسخه جدیدی از برنامه شما ساخته و آماده منتشر گردید باخبر شده و نسخه جدید برنامه تان را جایگزین نسخه قبلی نماید.
Minimum Required SDK: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه تان به چه حداقل نسخه ای از سیستم عامل اندروید نیاز دارد. برای مثال اگر گزینه API 14 را انتخاب نمایید، برنامه تان در سیستم عامل اندروید پایین تر از اندروید 4 یا همان IceCream Sandwich، نصب و اجرا نمی گردد.
اگر از امکانات خاص نسخه های جدیدتر سیستم عامل اندروید استفاده نمی نمایید پیشنهاد می گردد که API 8 را انتخاب نمایید. چرا که با انتخاب این نسخه از سیستم عامل اندروید مطمئن خواهید بود که برنامه شما در تمامی گوشی ها و تبلت ها اجرا خواهد شد.
Target SDK: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که بالاترین نسخه اندرویدی که برنامه شما می تواند در آن نصب و اجرا گردد کدام نسخه است. بدیهی ست که هرچه سطح API انتخاب شده بالاتر باشد، گوشی ها و تبلت های جدید نیز می توانند از برنامه شما استفاده نمایند.
Compile With: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه Eclipse از کدام نسخه از سیستم عامل اندروید برای نوشتن کلاس های برنامه و همچنین کامپایل و تست نمودن آن استفاده نماید.
Theme: در این لیست می توانید یک Theme برای برنامه خود انتخاب نمایید.
توجه داشته باشید زمانی که مقدار Compile With را کمتر از API 14 انتخاب نمایید، از این قسمت نمی توانید استفاده نمایید و می بایست از لیست موجود گزینه None رو انتخاب نمایید.
پس از مقداردهی نمودن فیلد های ذکر شده بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 4)
شکل 4
در مرحله بعدی اگر گزینه Create custom launcher icon را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد تا برای برنامه خود یک عکس جهت ساختن icon انتخاب و یا با استفاده از ابزار های خود برنامه Eclipse، icon مورد نظر خود را ترسیم نمایید. توجه داشته باشید که در صورت عدم انتخاب این گزینه، صفحه مربوطه برای شما باز نخواهد شد.
همچنین اگر گزینه Create Activity را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد که نام و نوع activity برنامه تان را انتخاب نمایید.
این دو گزینه را انتخاب می نماییم و سایر گزینه ها را به حالت پیش فرض خود می گذاریم. حال مجددا بروی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 5)
شکل 5
در مرحله بعدی می توانید برای برنامه خود یک icon انتخاب و یا رسم نمایید.
دکمه image برای انتخاب یک عکس ترجیحا با فرمت png به عنوان icon برنامه
دکمه Clipart برای انتخاب یک clipart « شکلک » به عنوان icon برنامه
دکمه Text برای ورود یک نوشته به عنوان icon برنامه
مورد استفاده قرار می گیرند.
ما دکمه image را انتخاب و پس از انتخاب کردن عکس مورد نظر به عنوان icon برنامه بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 6)
شکل 6
در مرحله بعدی گزینه Create Activity را انتخاب می نماییم و از لیست موجود که بیانگر انتخاب نوع Activity برنامه می باشد گزینه Blank Activity را انتخاب می نماییم. (شکل 7)
شکل 7
در مرحله آخر نیز باید برای activity و layout خود یک نام انتخاب نمایید. ما نام انتخاب شده پیش فرض را قبول کرده و بر روی دکمه Finish کلیک می نماییم تا پروژه مان ساخته شود. (شکل 8)
شکل 8
تا این جای کار ما پروژه خود را در برنامه Eclipse ایجاد کرده ایم. حال برای ادامه کار می بایست layout برنامه خود را طراحی نماییم.
برای این منظور یک TextView و یک Button بر روی layout خود قرار می دهیم. (شکل 9)
شکل 9
همچنین مقادیر لازم را در فایل string.xml وارد می نماییم. (شکل 10)
شکل 10
حال در این مرحله می بایست کد های اصلی برنامه را در کلاس MainActivity وارد نماییم.
اولین کدی که می بایست به کلاس MainActivity اضافه نماییم متد onCreate می باشد. این متد یکی از متدهای اصلی برنامه و همین طور چرخه حیات برنامه های اندرویدی می باشد و زمانی که برنامه برای اولین بار اجرا می گردد و یا دستگاه اندرویدی ما از حالت portrait به حالت landscape و یا بر عکس تغییر می کند، این متد فراخوانی می گردد.
یکی از دستوراتی مهمی که باید به این متد اضافه گردد دستور setContentView است. وظیفه این دستور به نمایش در آوردن layout برنامه می باشد (شکل 11)
شکل 11
مقدار activity_main نام فایل xml مربوط به layout برنامه مان می باشد.
همچنین دستور savedInstanceState حالت جاری layout برنامه را ذخیره می نماید. به این معنا که، فرض نمایید بر روی layout خود یک ابزار EditText قرار داده اید و مقدار نام خودتان را درون آن وارد کرده اید. زمانی که حالت دستگاه اندرویدی خودتون را به landscape و یا portrait تغییر دهید مشاهده می نمایید که مقدار نام شما هنوز در EditText وجود دارد و پاک نشده است. دلیل آن به خاطر استفاده از دستور فوق می باشد.
در مرحله بعدی می بایست کدهایی بنویسیم تا بوسیله ی آن بتوانیم به ابزارهای Button و TextView دسترسی پیدا نماییم و همچنین متغیرهای مورد نیاز را تعریف نماییم. (شکل 12)
شکل 12
اگر در زمان تعریف یک متغیر آنرا در ابتدای کلاس جاری و قبل از تمامی متدهای خود تعریف نمایید، آن متغیر یک متغیر سراسری محصوب شده و می توانید به راحتی در تمامی متدها و کلاس های کلاس جاری از آن استفاده نمایید.
اگر در زمان تعریف یک متغیر از کلمه کلیدی final استفاده نمایید، مقداری که به آن نصبت میدهید یک مقدار یکتا خواهد بود و به هیچ وجه نمی توانید مقدار آنرا در طول برنامه خود تغییر دهید.
برای راحتی کار ما ساختار فایل JSON خود را بصورت دستی در یک متغیر ذخیره نموده ایم. شما می توانید آنرا برروی بستر اینترنت قرار دهیم و از داخل برنامه آنرا دانلود و مورد تجزیه قرار دهید و یا یک فایل JSON در پوشه assets پروژه خود اضافه نمایید.
حال که دسترسی لازم به ابزارهای Button و TextView ایجاد شده است و متغیر های مورد نظر را تعریف نموده ایم، در مرحله بعد کد های لازم جهت تجزیه نمودن ساختار JSON ذخیره شده در متغیر strJson، واکشی اطلاعات تجزیه شده و نمایش آنها به کاربر را وارد می نماییم. (شکل 13)
شکل 13
کدهای بالا را در ادامه کدهای وارد شده قبلی در متد onCreate قرار میدهیم.
در کد بالا، ابتدا با استفاده از خصوصیت setOnClickListener، برای دکمه خود رویداد کلیک را شبیه سازی نموده ایم. در مرحله بعد، متغیری با نام OutputData تعریف نموده ایم که قرار است اطلاعات تجزیه شده را در خود ذخیره نماید. سپس شئی با نام jsonResponse از کلاس JSONObject ایجاد نموده ایم.
کلاس JSONObject وظیفه کار با ساختارهای JSON را دارد.
در مرحله بعد نیز با استفاده از بلاک try / catch، خطاهای احتمالی را کنترل می نماییم. اولین کدی که در بلاک try وارد نموده ایم این است که شی ایجاد شده jsonResponse را ساخته ایم. در زمان ساختن شی می بایست پارامتر ورودی را نیز برای آن مقداردهی نماییم که معمولا از نوعString می باشد و همان محتوای JSON مورد نظرمان می باشد. بعد از ساختن شی jsonResponse، شی دیگری با نام jsonMainNode از کلاس JSONArray ایجاد نموده ایم و آنرا با مقدار خروجی متدoptJsonArray شی jsonResponse مقداردهی نموده ایم.
هر ساختار JSON دارای گره هایی می باشد که اطلاعات مورد نظر مان را در بر دارد. ما با استفاده از متد optJsonArray شی jsonResponse، تعیین نموده ایم که در ساختار JSON ذخیره شده در متغیر strJson، به دنبال گره Android هستیم.
در خط بعدی، با استفاده از متد length شی jsonMainNode، تعداد گره های پیدا شده ای که شامل کلمه کلیدی Android هستند را تعیین و در متغیری با نام lengthJsonArr که از نوع داده ای int می باشد ذخیره نموده ایم.
حال با استفاده از حلقه تکرار for قصد واکشی اطلاعات گره های Android را داریم. در خط ابتدایی حلقه for، شئی با نام jsonChildNode از کلاس JSONObject ایجاد نموده ایم و آنرا با مقدار خروجی متد getJsonObject شی jsonMainNode، مقداردهی نموده ایم. با انجام این عمل کل اطلاعات اولین گره Android ساختار JSON خود را در شی jsonChildNode ذخیره نموده ایم.
در خطوط بعدی نیز، با استفاده از متد optString شی jsonChildNode، داده های فیلد های گره Android را خوانده و در متغیرهای متناظر با خودشان ذخیره نموده ایم.
متد optString یک پارامتر از نوه String دریافت می نماید که نام فیلد موجود در ساختار JSON می باشد.
با استفاده از دستور Integet.parseInt، نوع داده ای فیلد خوانده شده را به int تغییر داده ایم.
در خط بعدی با استفاده از عملگر + تمامی متغیرها را به یکدیگر چسبانده ایم و یک ساختار واحد برای نمایش دادن به کاربر ایجاد و در متغیر OutputData ذخیره نموده ایم و در آخر با استفاده از متد setText شی lblOutput « ابزار TextView »، ساختار تولید شده را به کاربر نمایش داده ایم.
در قسمت بلاک catch نیز خطای تولید شده احتمالی را به برنامه نویس نمایش داده ایم.
در صورتی که برنامه بدون هیچ مشکلی اجرا گردد شبیه به تصویر زیر خواهد بود. (شکل 14)
شکل 14
در اینجا کار ما به اتمام میرسد. امیدواریم نهایت استفاده از این مقاله را برده باشید.
شاد و پیروز باشید.