Gson Kütüphanesi
Android’de sık kullanılan işimize yarayan bazı faydalı kütüphaneler bulunmakta. Bugün bunlar Gson üzerinde durucağız. Web servisler mobil programlamada adeta olmazsa olmazlardan ve bu web servisler ya da kullandığımız bir API JSON ya da XML formatında dönmektedir.
JSON oluşturmak ve JSON parse etme işlerini bizim için yerimize yapan bu kütüphaneyi öncelikle build tool olan Gradle’a ekleyerek başlıyoruz.
Bu kütüphanelerin diğer build toollar için olan dependencie’leri internette de bulabilirsiniz bu kütüphane için: compile ‘com.google.code.gson:gson:2.2.+’ kullanabilirsiniz.
Kütüphanemizi ekledikten sonra bir Personel class’ını oluşturuyoruz.
Öncelikle oluşturduğumuz nesneyi JSON’a çeviriyoruz ki Json bir string olduğu için toJson() metodu da bize string dönüyor ve bizde bunu fromJson() metodu ile tekrar nesnemize çeviriyoruz.
Faydalı olması dileğiyle.
Yazı için teşekkürler, 2 sorum olacak
1. si sadece Gson sınfıınfdan instance oluşturup metotlarını kullansankta aynı görevi görüyor. GsonBuilder kullanmanın ne avantajı var ?
2. si Personel sınıfını bir listeye doldurup onu json a bu şekilde çevrilebiliyorum ama Liste şeklinde jsona dönen veriyi yine liste olarak nasıl Array Liste parse edebilriz ?
Örneğin ağaşıdaki gibi olmuyor ?
List personList = gson.fromJson(json, Person.class);
Sorular için teşekkürler kaçırdığım bir noktayı sormuşsunuz. Umarım diğer okuyucularada katkısı olur.
1. sorunuzun tam bir cevabını bilmememle beraber tasarım şablonu diyebilirim. Aslında bu tarz bir yaklaşımı başka yerlerde de görüyoruz. Neslerimizi başka bir nesne yardımıyla oluşturuyoruz.
2. soruda ise şöyle bir sorun var json nesnesi artık jsonArray olduğu için kullandığımız metod jsonElemente çeviriyor. Yani direk olarak fromJsonArray() gibi bir metod bulunmadığı için aşağıdaki gibi bir yaklaşımla çözebiliriz. Bizde elimizdeki jsonArrayi tek tek jsonElemente çevirirsek listemize ekleyebiliriz. Belki başka çözümlerde vardır umarım faydalı olur.
List personels = new ArrayList();
personels.add(personel);
personels.add(personel1);
JsonArray jsons = (JsonArray) gson.toJsonTree(personels);
List personelList = new ArrayList();
for (int i = 0; i < jsons.size(); i++) {
personelList.add(gson.fromJson(jsons.get(i) , Personel.class));
}