Last Updated on 11 years by Mas Herdi
Hei semua, udah lama sekali nih saya tidak memperbarui blog ini dengan postingan… haha Maklum karena sudah bekerja maka waktu saya untuk menulis di sini pun jadi semakin berkurang. 🙂 Berbeda dengan jaman-jaman kuliah yang nampaknya sangat santai.
Kali ini saya akan membuat tutorial tentang bagaimana cara mengkonversi ArrayList<T> dimana T adalah suatu objek dengan tipe tertentu, ke dalam String menggunakan GSon. Mungkin beberapa dari kalian ada yang heran, mengapa topiknya kurang familiar di telinga. Sebenarnya memang ini adalah topik advanced yang hanya bisa digunakan pada saat-saat tertentu. Tapi karena waktu yang dibutuhkan untuk menulis topik beginian tidak banyak, mungkin juga tulisan-tulisan saya lainnya yang akan saya post-kan di blog ini juga tentang topik-topik yang advanced. 😀
Jadi cerita dimulai saat saya bermaksud untuk mengkonversi ArrayList yang berisi objek berupa LatLong ke String. Array latitude dan longitude tersebut didapat dari Google Maps pada saat menghasilkan direction atau petunjuk arah dari satu koordinat ke koordinat lainnya. Mungkin lain kali saya akan bahas juga tentang bagaimana mendapatkan Direction pada Android Maps API.
Untuk proses pengkonversian, saya menggunakan library JSon milik Google, yaitu GSon. Ada fungsi yang sangat bermanfaat di library tersebut. Yaitu fungsi toJSon() yang otomatis akan mengkonversi objek apapun ke dalam String.
Namun setelah dikonversi ke dalam String, tentunya objek tersebut harus bisa dikembalikan lagi ke objek awal mulanya, dari String. Nah untuk melakukan hal itu, kita harus mendefinisikan tipe dari objek tersebut menggunakan Java Reflection yang nantinya akan digunakan lagi untuk mengembalikan JSon String tersebut ke objek asal.
Pertama-tama, setelah mendapatkan direction yang berupa array latitude dan longitude, kita akan menginisialisasi Gson. Langkah selanjutnya adalah mendefisikan Type dari objek array list tersebut menggunakan TypeToken.
ArrayList<LatLng> directionPoint = md.getDirection(doc); Gson gson = new Gson(); Type listOfTestObject = new TypeToken<ArrayList<LatLng>>(){}.getType();
Setelah itu, kita bisa langsung mengkonversikan objek tersebut ke dalam Json, dengan mengikutsertakan tipe objeknya.
String json = gson.toJson(directionPoint, listOfTestObject);
Ketika ingin mengkonversi ulang, dari String ke objek, kita tinggal panggil kode berikut.
ArrayList<LatLng> directionPoint = (ArrayList<LatLng>) gson.fromJson(json,listOfTestObject);
Semoga berguna! 🙂
Kak, kalo ada eeror dibagian TypeToken yang getType() kira-kira kenapa ya?? mohon bantuannya
Coba cek di logcat detail errornya seperti apa 🙂
Kalau tanpa GSON bagaimana cara Convert ArrayList ke String ya??
Kalau untuk convert ArrayList ke String[] array, bisa pakai method toArray()