Merhaba Arkadaşlar,
Bu dersimizde GSON kullanarak json parse etmeyi anlatacağım.Bu dersimiz bir önceki dersimin devamı niteliğinde olacaktır. O dersimizde ne yapmıştık kısaca anlatmam gerekirse Spinner’dan seçilen kişi ismine göre Volley kütüphanesi kullanarak Http Request gerçekleştirmiştik ve kişi bilgilerini sunucudan çekmiştik.Gelen json veriyi klasik json parse etme yöntemiyle parse edip uygulama içinde göstermiştik.
Bugünkü dersimizde ise gelen veriyi klasik yöntemlerle değil onun yerine bizim yerimize parse işlemlerini gerçekleştiren ve gelen verilerden istediğimiz şekilde obje oluşturarak işimizi kolaylaştıran GSON ile json parse etmeyi anlatacağım.
Arkadaşlar baştada dediğim gibi bu dersim diğer dersin devamı şeklinde olacak .O dersimde örnek kod paylaşmıştım . Aynı örneği bu sefer Gson parse ile değiştirip paylaşacağım.Kod üzerinde gerekli açıklamaları yapmaya çalıştım.Volley kullamını daha iyi anlamak için diğer dersimi incelemenizi ve sonrasında burdaki kaynak kodu indirip incelemenizi tavsiye ederim.
Not: Uygulamamızın libs kısmına gson.jar’ı eklememiz lazım. gson.jar’ı kaynak kod içinde bulabilirsiniz.
MainActivity.java
import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; import android.widget.TextView; import com.android.volley.Request.Method; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.google.gson.Gson; import com.mobilhanem.jsonparser.app.AppController; import com.mobilhanem.jsonparser.models.PersonClass; public class MainActivity extends Activity { Spinner sp; int secilen; TextView t1, t2, t3, t4; ProgressDialog pDialog; String veri_string; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // activity_main.xml de oluşturduğumuz textview leri koda tanıtıyoruz. t1 = (TextView) findViewById(R.id.textView2); t2 = (TextView) findViewById(R.id.textView4); t3 = (TextView) findViewById(R.id.textView6); t4 = (TextView) findViewById(R.id.textView8); // activity_main.xml de oluşturduğumuz spineri koda tanıtıyoruz. sp = (Spinner) findViewById(R.id.spinner1); // Spinera Listener ekliyoruz sp.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { secilen = arg2; // spinerdan secilen değerin sonra değerini // alıyoruz. kaçıncı sırada olduqunu if (secilen != 0) { // seçilen deger ilk deger değilse yani Kişi // seçiniz yazısı değilse pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage("Kişi Bilgileri Getiriliyor..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); // ProgressDialog u iptal // edilemez // hale getirdik. pDialog.show(); getData(); } } @Override public void onNothingSelected(AdapterView<?> arg0) {//OnItemSelectedListener implement methodu } }); } public void getData() { // TODO adding request to POST method and URL // Burada issteğimizi oluşturuyoruz, method parametresi olarak post // seçiyoruz ve url'imizi const'dan alıyoruz. StringRequest myReq = new StringRequest(Method.POST, Const.url, new Listener<String>() { @Override public void onResponse(String response) { // // TODO datalarımız geldi parse işlemi yapılmalı // // TODO lets parse it //TODO Gson objesi yaratıyoruz //TODO Create Gson Object Gson gson = new Gson();//gson objesi oluşturduk //TODO yarattığımız Gson objesini Modelimize yani PersonClass'a çeviriyoruz, //Böylece gelen verilere rahatça ulaşabileceğiz. //TODO Create Model Object with PersonClass PersonClass gsonResponse = gson.fromJson(response, PersonClass.class); //PersonClass'mızdan obje oluşturuyoruz böylelikle set ettiğimiz verilere ulaşacağız. // gsonResponse'dan aldığımız değerleri textView lere // yazdırıyoruz. t1.setText(gsonResponse.isim); t2.setText(gsonResponse.yas); t3.setText(gsonResponse.mail); t4.setText(gsonResponse.adres); pDialog.dismiss(); // ProgresDialog u kapatıyoruz. } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO there is an error to connecting server or // getting data // Server'a bağlanırken yada veri çekilirken hata oldu System.out.println(error.getMessage()); } }) { // TODO let put params to volley request // Burada göndereceğimiz request parametrelerini(birden fazla // olabilir) set'liyoruz protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { Map<String, String> params = new HashMap<String, String>(); // TODO seçilen kişinin id'sini kisi parametresine ekliyoruz params.put("kisi", secilen + ""); return params; }; }; myReq.setShouldCache(false); //cache kapatıyoruz // Request(İstek)'i Volley'in Requst sırasına atıyoruz // Adding request to volley request queue AppController.getInstance().addToRequestQueue(myReq); } }
PersonClass.java
package com.mobilhanem.jsonparser.models; public class PersonClass { //Gelen datalarımızın isimleri ve türleri: //Değişken isimleri json veri isimleri ile aynı olması gerekmektedir public String isim; public String yas; public String mail; public String adres; //Eğer String yerine int yazsaydık yada yas yerine age yazsaydık proje çalışmayacaktı. //Ve Crash Olacaktı. //Yukarıdaki verilere getter metodlarını yazıpta ulaşabilirdik. }
Evet arkadaşlar bu dersimde anlatmak istediklerim bu kadar. Birdahaki dersimde Volley Kullanarak İmage download etmeyi anlatmayı düşünüyorum.Bu dersimi daha iyi anlamak için kaynak kodu indirmenizi öneririm.
Arkadaşlar sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir. Soru,görüş ve önerilerinizi yorum bırakabilirsiniz.Birdahaki dersimize kadar kendinize iyi bakın.
Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.