Android — Yerel JSON Veri Okuma Örneği
Local JSON Data Read Example
Herhangi bir servis çağrısı yapmadan, internet ihtiyacı olmayan uygulamalarda da genel olarak kullanılan uygulama içindeki lokal JSON dosyası içinden okuma işlemine küçük bir örnek yapacağız.
Uygulama içinde bulunan bir data kaynağından veri çekmek için res klasörü altında raw adı ile yeni bir klasör oluşturuyoruz.
raw klasörü içine kullanacağımız data kaynağını “***.json” oluşturduktan sonra kod yazmaya başlayabiliriz.
Oluşturduğumuz JSON dosyanın kriterlere uyumunu http://jsonviewer.stack.hu/ sitesinden kontrol edebilirsiniz. Kullandığım JSON dataya https://github.com/serkansekman/local_json_data_read_example/tree/master/app/src/main/res/raw linkinden ulaşabilirsiniz.
Datanın okunup uygulamanın içinde kullanılması için, modelleme POJO’larının yazılması gerekir. Modelleri hızlıca oluşturmak için http://www.jsonschema2pojo.org/ sitesini kullanabilirsiniz.
Preview butonu ile oluşan class’ların hepsinin birarada bulunması için proje içinde model adında bir klasör oluşturabilirsiniz (zorunlu değil, kullanım amacına göre kümeleme işlemi içindir).
Oluşan POJO’yu kopyalayıp model klasörünün yeni bir class oluşturuyoruz.
JSON dosyasından okunan verilerin POJO’ya eşitlenmesi için kullanılan SerializedName ve Expose özelliklerinin aktif edilmesi için app build.gradle dosyasına aşağıdaki library’i compile etmesi için ekliyoruz.
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
Şimdi Lokal json datayı okuma zamanı!
Oluşturulan POJO’ya uygun lokal JSON dosyadan veri almak için aşağıdaki kod bloğunu kullanıyoruz.
CityList cityList = new CityList();try { //Load File BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.jsondata))); StringBuilder jsonBuilder = new StringBuilder(); for (String line = null; (line = jsonReader.readLine()) != null; ) { jsonBuilder.append(line).append("\n"); } Gson gson = new Gson(); //json’u parse etmek için Gson kütüphanesini kullanıyoruz cityList = gson.fromJson(jsonBuilder.toString(),CityList.class);} catch (FileNotFoundException e) { Log.e("jsonFile", "file not found");} catch (IOException e) {Log.e("jsonFile", "ioerror");}
Lokal JSON dosyadan okuduğumuz data artık elimizde.
Örnek olarak aşağıdaki kodlar ile Spinner’a İl adı aktarma işlemini aldığımız bu data ile yaptık. Bu aşamadan sonrası uygulamanızda kullanacağınız lokal JSON data verisinin çeşitliliğine ve model yapısına kalmıştır. Veri çekmek bu kadar kolay :)
Spinner spinner = (Spinner) findViewById(R.id.spinner);List<String> spinnerData = new ArrayList<>();for(int i=0;i<cityList.getCityDetail().size();i++){ spinnerData.add(cityList.getCityDetail().get(i).getName());}ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerData);dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(dataAdapter);
Uygulamanın örnek kodlarına Serkan Sekman Github Hesabından erişebilirsiniz.
Yararlı olması dileğiyle…