كيفية قراءة ملف الjson واستخراج جميع البيانات من داخل list التي تحمل key معينه

كيفية قراءة ملف الjson واستخراج جميع البيانات من داخل list التي تحمل key معينه


كيفية قراءة ملف ال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 وسوف تجد الملف للتحميل في اسفل المقالة .

التعامل مع ملفات json باستخدام الجافا

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 كما هو موضح لعرض جميع المحتويات التي بداخله , سوف تجد جميع هذه الملفات في نهايه المقالة للتحميل والاطلاع عليها .


قراءة json الدول والحصول على جميع اسماء الدول والمدن التي بداخلها

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;
    }

}


county.json

users.json


لمزيد من الشروحات


تعليقات