Android — Yerel JSON Veri Okuma Örneği

Local JSON Data Read Example

Serkan Sekman
Aug 23, 2017 · 3 min read

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/jsondata.json

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).

POJO klasörü

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…

MobileTech

Etiya Mobil Geliştirme Ekibi olarak yazılım,tasarım,test ve teknoloji süreçlerinin hikayelerini paylaştığımız Medium yayınımız.

)

Serkan Sekman

Written by

MobileTech

Etiya Mobil Geliştirme Ekibi olarak yazılım,tasarım,test ve teknoloji süreçlerinin hikayelerini paylaştığımız Medium yayınımız.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade