قراءة و استخراج بيانات الـJSON في الـAndroid Studio
السلام عليكم و رحمة الله و بركاته.
في هذه المقالة سنتعلم كيفية قراءة و استخراج بيانات الـJSON في الـAndroid Studio.
قبل أن نبدأ باستخراج البيانات أود أن نلقي نظرة على ماهية الـJSON المتعلق ب Flicker Api. باستخدام موقع jsonlint حيث يمكننا أن نرى التكوين الداخلي للـJSON بالاضافة الى التأكد من أن الملف هوة عبارة عن JSON.
رابط ملف الـJSON هو: https://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1
كما نلاحظ أعلاه، الأشياء المحاطة بـ{} هي عبارة عن object و الأشياء المحاطة بـ[] هي عبارة عن array، لذلك نستنتج بأن الـJSON هو عبارة عن objects و arrays.
في هذا الدرس سوف نقوم باستخراج الـtitle و الـtags من الـarray التي تدعى items.
و الآن ننتقل الى التطبيق في الـ Android Studio...
في البداية يجب علينا عمل التالي:
- ننشئ كلاس ونسميه photo و الذي يحتوي على متغيرات: title, tags و الذي بدوره سوف يخزن البيانات المطلوبة من الـJSON.
- إضافة getters and setters لهذه المتغيرات.
package org.example.rami.flickerbrowser;
import java.io.Serializable;
/**
* Created by Rami on 5/2/2017.
*/
class Photo implements Serializable{
private static final long serialVersionUID = 1L;
private String mTitle;
private String mTags;
public Photo(String title, String tags) {
mTitle = title;
mTags = tags;
}
String getTitle() {
return mTitle;
}
String getTags() {
return mTags;
}
@Override
public String toString() {
return "Photo{" +
"mTitle='" + mTitle + '\'' +
", mTags='" + mTags + '\'' +
'}';
}
}
ثم ننشئ كلاس آخر و نسميه على سبيل المثال GetFlickerJsonData و الذي بدوره سوف يحتوي على الميثود onDownloadComplete التي تقوم بقراءة و استخراج المعلومات المطلوبة من الـJSON بالاضافة الى تخزينها في الاوبجكت من نوع Photo.
package org.example.rami.flickerbrowser;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Rami on 5/3/2017.
*/
class GetFlickerJsonData implements GetRawData.OnDownloadComplete {
private static final String TAG = "GetFlickerJsonData";
private List<Photo> mPhotoList = null;
public GetFlickerJsonData() {
Log.d(TAG, "GetFlickerJsonData called");
//here you do somthing additional
}
@Override
public void onDownloadComplete(String data) {
mPhotoList = new ArrayList<>();
try {
JSONObject jsonData = new JSONObject(data);
JSONArray itemsArray = jsonData.getJSONArray("items");
for(int i = 0; i < itemsArray.length(); i++){
JSONObject jsonPhoto = itemsArray.getJSONObject(i);
String title = jsonPhoto.getString("title");
String tags = jsonPhoto.getString("tags");
Photo photoObject = new Photo(title, tags);
mPhotoList.add(photoObject);
Log.d(TAG, "onDownloadComplete: " + photoObject.toString());
}
}catch (JSONException jsone){
jsone.printStackTrace();
Log.e(TAG, "onDownloadComplete: Error processing json data " + jsone.getMessage());
}
}
Log.d(TAG, "onDownloadComplete ends");
}
لقد قمنا بعمل التالي:
- احاطة الكود بالكامل بtry و catch لمعالجة ظهور أي خطأ في ملف الـJSON.
- اضافة متغير mPhotoList من نوع List و الذي سوف يتم تخزين فيه الـphotos و التي تحتوي على بيانات الـJSON المستخرجة.
- اضافة Constructor لانشاء object من هذا الكلاس بحيث يتم اضافة أي شيء فيه على حسب تصميمك للبرنامج الكامل و طريقة عمله.
- اضافة الـmethod و هي onDownloadComplete و التي بدورها سوف تستخرج المعلومات المطلوبة من الـJSON المحمل كما هو موضح أعلاه.
و هذه الـmethod تحتوي على:
- المتغير jsonData من نوع ـJSONObject و الذي يحتوي على كامل ملف الـJSON.
- المتغير itemsArray من نوع JSONArray والذي يحتوي على الـarray و التي تدعى items.
و الآن نقوم باضافة loop و التي بدورها تقوم بالتالي:
- استخراج الـtitle و تخزينه بالمتغير title من نوع String.
- استخراج الـtags و تخزينه بالمتغير tags من نوع String.
- في النهاية نقوم بانشاء اوبجكت من نوع Photo و اضافته الى الـmPhotoList و التي تحتوي على جميع الـobjects من نوع Photo.
لمزيد من المعلومات عن org.json package و الكلاسات الموجودة فيه: https://developer.android.com/reference/org/json/package-summary.html
و هنا وصلنا الى نهاية هذا الدرس.?
أتمنى أني قد وفقت بايصال المعلومة.
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !