كيفية قراءة ملف الjson واستخراج جميع البيانات من داخل list التي تحمل key معينه
في مقالة اليوم سوف نتعرف على كيفية التعامل مع json وكيف تقوم بقراءه محتويات الملف كما تريد من خلال وضع الملف بداخل برنامج الاندرويد ستوديو وكما نعلم ان ملفات الjson من اهم الملفات التي يتعامل معها المبرمجين بشكل كبير وغالبا ما تقوم التطبيقات الكبيره بالتعامل مع هذا النوع من الصيغ للبيانات سواء كانت البيانات تم الحصول عليها من الانترنت او بشكل داخلي والبعض يقابل مشاكل في التعامل مع هذه الملفات ولكن في مقالة اليوم سوف نشرح لكم كيفية الحصول على البيانات بكل سهوله بعدة اشكال من الملفات .
Android IDE الرسمي هو Android Studio ، الذي تم تطويره بواسطة Google.قم تبثبيت Android Studio ، وأنشئ مشروعًا جديدًا باستخدام نموذج "جديد" ، ثم اسحب بعض أدوات واجهة المستخدم إلى مساحة الرسم الفارغة يتم تخزين تسميات أدوات واجهة المستخدم في سلاسل مضمنة بشكل افتراضي. عند تحريك المؤشر فوق عنصر واجهة مستخدم ، يعرض Android Studio عرض تلميح أداة لإعادة تحديد موقع السلسلة المشفرة إلى ملف مورد strings.xml. تابع وانقل كل السلاسل القابلة للترجمة إلى ملف المورد strings.xml ، وفقًا لتوجيهات الأداة.
اضافة مكتبة jsonObject
عليك اولا ان تقوم بتثبيت هذه المكتبة اذا كانت لا تتوفر لديك
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.9'
التعامل مع ملفات json باستخدام الجافا
قمنا بعمل تصميم في صفحة الmain_activity يحتوي على listView فقط وبعدها انتقلنا الى الكود , بعد تعريف المتغيرات قمنا بعمل ميثود باسم loadJSONFromAsset وبداخلها قمنا اولا بقراءة محتويات الملف بشكل كامل من خلال الامر InputStream وهو المخصص في عمليات القراءه وبعد القراءه استخدمنا المكتبة التي شرحناها لكم بالاعلى وهي JsonObject وقمنا بارسال محتويات الملف الذي قراءة في المتغير json وبعدها استخدمنا JsonArray لكي نحصل على بيانات List معينه والتي كانت باسم formules وهذا الملف يحتوي على نص موجود في key باسم formules ولكن استخدمنا هنا الloop لكي نمر على جميع العناصر الموجوده بداخل هذه الlist وسوف تجد الملف للتحميل في اسفل المقالة .
MainActivity.java
public class MainActivity2 extends AppCompatActivity {
ActivityMain2Binding binding;
private static final String TAG = "MainActivity2";
ArrayList<String> list;
ArrayAdapter<String> adapter;
String data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding= DataBindingUtil.setContentView(this,R.layout.activity_main2);
list = new ArrayList<>();
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
binding.list.setAdapter(adapter);
loadJSONFromAsset(this);
}
public String loadJSONFromAsset(Context context) {
data = "";
String json = "";
try {
InputStream is = context.getAssets().open("users.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
Log.i(TAG, "JSONFile: " + json);
// all data of file .
JSONObject jsonObject = new JSONObject(json);
JSONArray users = jsonObject.getJSONArray("formules");
Log.i(TAG, "JSONArray: 123" + users);
// all data oo array .
for (int i = 0; i < users.length(); i++) {
JSONObject names = users.getJSONObject(i);
String name = names.getString("formule");
Log.i(TAG, "JSONName: " + name);
// add name formule of array
list.add(name);
}
} catch (IOException | JSONException ex) {
ex.printStackTrace();
return null;
}
return data;
}
}
قراءة json الدول والحصول على جميع اسماء الدول والمدن التي بداخلها
هنا سوف نتعامل مع ملف اخر ولكن هذا الملف موجود بداخله مجموعة من الlits وكل list بداخلها بيانات ونحن نريد هنا ان نعرض جميع اسماء الlist وبناء على الاسم يظهر اسماء المدن التي بداخلها ولهذا استخدمنا الامر names بعد قراءة محتويات الملف لكي يعرض اسماء الlist وبعدها نحصل على الاسم ونمرره بداخل الJsonArray كما هو موضح لعرض جميع المحتويات التي بداخله , سوف تجد جميع هذه الملفات في نهايه المقالة للتحميل والاطلاع عليها .
MainActivity.java
public String loadJSONCountry(Context context) {
data = "";
String json = "";
try {
InputStream is = context.getAssets().open("county.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
Log.i(TAG, "JSONFile: " + json);
// all data of file .
JSONObject jsonObject = new JSONObject(json);
Log.i(TAG, "loadJSONCountry: "+ jsonObject.names());
// list of file .
for (int i = 0; i < jsonObject.names().length(); i++) {
list.add(jsonObject.names().getString(i));
// add list to ListView
}
JSONArray users = jsonObject.getJSONArray("Afghanistan");
Log.i(TAG, "JSONArray: 123" + users);
// all data in array .
} catch (IOException | JSONException ex) {
ex.printStackTrace();
return null;
}
return data;
}
}
لمزيد من الشروحات
- تصميم صفحة setting باستخدام android studio بإستخدام xml
- اضافة زر للتبديل بين الى الليلي في اندرويد ستوديو | Dark and white mode android
- شرح كيفية عمل ImageSlide بعدة اشكال وبدون مكتبات في الاندرويد ستديو
- تصميم برنامج باستخدام برنامج اندرويد ستوديو لارسال الاشعارات في وقت محدد
- نقل البيانات والصور من صفحة للاخرى اثناء الصغط على الrecyclerview
- شرح كيفية نقل بيانات الcolors من api من activity الى اي مكان اخر Android studio