[Programming] Simple JSON Android Tutorial – hai guys, tutorial kali ini akan membahas tentang penggunaan json di android.
Seperti anda ketahui JSON merupakan salah satu cara yang biasa
digunakan untuk pertukaran data. Contoh website yang menggunakan JSON yakni twitter, jika anda sudah biasa menggunakan API twitter maka anda tidak akan asing dengan yang namanya JSON.
Untuk mengolah data melalui JSON saya membiasakan menggunakan kelas tersendiri, dikarenakan bisa digunakan untuk lain waktu. Contoh kelas untuk mengolah data dari json seperti berikut :
simpan dengan nama JSONparser.java
Untuk mengelola json kita membutuhkan httpClient dan HttpResponse, untuk method yang digunakan dapat menggunakan method get maupun post, pada contoh diatas menggunakan method POST. untuk data jsonnya saya menggunakan sample sebagai berikut :
simpan menjadi contact.php
untuk MainActivitynya sebagai berikut :
untuk URL nya saya ganti menjadi http://10.0.2.2/pm/contact.php yakni lokasi file contact.php , 10.0.2.2
adalah ip untuk localhost komputer anda jika diakses melalui android
emulator. Kemudian rubah file main.xml menjadi seperti ini :
kemudian buat lagi sebuah file xml dengan nama list_data.xml dan isi dengan code berikut :
dan jangan lupa untuk menambahkan permission INTERNET pada file manifestnya
jika anda menjalankannya maka tampilannya akan seperti ini :
Untuk pembelajaran anda dapat mendownload source codenya dengan link dibawah ini…
Download Source Code Simple Android JSON Tutorial
Untuk mengolah data melalui JSON saya membiasakan menggunakan kelas tersendiri, dikarenakan bisa digunakan untuk lain waktu. Contoh kelas untuk mengolah data dari json seperti berikut :
01 | /* |
02 | * PratamaWijaya.com |
03 | * JSONparser.java |
04 | */ |
05 |
06 | package id.jay.emrs.service; |
07 |
08 | import java.io.BufferedReader; |
09 | import java.io.IOException; |
10 | import java.io.InputStream; |
11 | import java.io.InputStreamReader; |
12 | import java.io.UnsupportedEncodingException; |
13 | import org.apache.http.HttpEntity; |
14 | import org.apache.http.HttpResponse; |
15 | import org.apache.http.client.ClientProtocolException; |
16 | import org.apache.http.client.methods.HttpPost; |
17 | import org.apache.http.impl.client.DefaultHttpClient; |
18 | import org.json.JSONException; |
19 | import org.json.JSONObject; |
20 |
21 | import android.util.Log; |
22 |
23 | public class JSONparser { |
24 | static InputStream is = null ; |
25 | static JSONObject jObj = null ; |
26 | static String json = "" ; |
27 |
28 | public JSONparser() { |
29 |
30 | } |
31 |
32 | public JSONObject getJSONFromUrl(String url) { |
33 | // http request |
34 | try { |
35 |
36 | DefaultHttpClient httpClient = new DefaultHttpClient(); |
37 | HttpPost httpPost = new HttpPost(url); |
38 |
39 | HttpResponse httpResponse = httpClient.execute(httpPost); |
40 | HttpEntity httpEntity = httpResponse.getEntity(); |
41 | is = httpEntity.getContent(); |
42 |
43 | } catch (UnsupportedEncodingException e) { |
44 | // TODO: handle exception |
45 | e.printStackTrace(); |
46 | } catch (ClientProtocolException e) { |
47 | // TODO: handle exception |
48 | e.printStackTrace(); |
49 | } catch (IOException e) { |
50 | // TODO: handle exception |
51 | e.printStackTrace(); |
52 | } |
53 |
54 | try { |
55 | BufferedReader reader = new BufferedReader( new InputStreamReader( |
56 | is, "iso-8859-1" ), 8 ); |
57 | StringBuilder sb = new StringBuilder(); |
58 | String line = null ; |
59 |
60 | while ((line = reader.readLine()) != null ) { |
61 | sb.append(line + "\n" ); |
62 | } |
63 |
64 | is.close(); |
65 | json = sb.toString(); |
66 |
67 | } catch (Exception e) { |
68 | // TODO: handle exception |
69 | Log.e( "BUffer Error" , "Error converting result" + e.toString()); |
70 | } |
71 |
72 | // try parse string to a json |
73 | try { |
74 | jObj = new JSONObject(json); |
75 | } catch (JSONException e) { |
76 | // TODO: handle exception |
77 | Log.e( "Json parser" , "error parsing data" + e.toString()); |
78 | } |
79 |
80 | return jObj; |
81 |
82 | } |
83 |
84 | } |
Untuk mengelola json kita membutuhkan httpClient dan HttpResponse, untuk method yang digunakan dapat menggunakan method get maupun post, pada contoh diatas menggunakan method POST. untuk data jsonnya saya menggunakan sample sebagai berikut :
01 | { |
02 | "data":[ |
03 | { |
04 | "nama" : "Pratama", |
05 | "email" : "admin@pratamawijaya.com" |
06 | }, |
07 | { |
08 | "nama" : "emrs", |
09 | "email" : "emrs@pratamawijaya.com" |
10 | }, |
11 | { |
12 | "nama" : "jay", |
13 | "email" : "jay@pratamawijaya.com" |
14 | } |
15 | |
16 | ] |
17 | } |
untuk MainActivitynya sebagai berikut :
01 | package id.jay.emr.jsontutorial; |
02 |
03 | import java.util.ArrayList; |
04 | import java.util.HashMap; |
05 |
06 | import id.jay.emrs.service.JSONparser; |
07 |
08 | import org.json.JSONArray; |
09 | import org.json.JSONException; |
10 | import org.json.JSONObject; |
11 |
12 | import android.app.ListActivity; |
13 | import android.os.Bundle; |
14 | import android.widget.ListAdapter; |
15 | import android.widget.SimpleAdapter; |
16 |
17 | public class MainActivity extends ListActivity { |
18 | /** Called when the activity is first created. */ |
19 |
20 | private static String URL = "http://10.0.2.2/pm/contact.php" ; |
21 |
22 | // tag |
23 | private String TAG_DATA = "data" ; |
24 | private String TAG_NAMA = "nama" ; |
25 | private String TAG_EMAIL = "email" ; |
26 |
27 | JSONArray contacts = null ; |
28 |
29 | // panggil class parser |
30 | JSONparser parser = new JSONparser(); |
31 |
32 | @Override |
33 | public void onCreate(Bundle savedInstanceState) { |
34 | super .onCreate(savedInstanceState); |
35 | setContentView(R.layout.main); |
36 |
37 | ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); |
38 |
39 | JSONObject json = parser.getJSONFromUrl(URL); |
40 | try { |
41 | contacts = json.getJSONArray(TAG_DATA); |
42 |
43 | for ( int i = 0 ; i < contacts.length(); i++) { |
44 | JSONObject data = contacts.getJSONObject(i); |
45 |
46 | String nama = data.getString(TAG_NAMA); |
47 | String email = data.getString(TAG_EMAIL); |
48 |
49 | HashMap<String, String> map = new HashMap<String, String>(); |
50 | map.put(TAG_NAMA, nama); |
51 | map.put(TAG_EMAIL, email); |
52 |
53 | contactList.add(map); |
54 | } |
55 | } catch (JSONException e) { |
56 | // TODO: handle exception |
57 | e.printStackTrace(); |
58 | } |
59 |
60 | // tampilkan ke listadapter |
61 | ListAdapter adapter = new SimpleAdapter( this , contactList, |
62 | R.layout.list_data, new String[] { TAG_NAMA, TAG_EMAIL }, |
63 | new int [] { R.id.nama, R.id.email }); |
64 | setListAdapter(adapter); |
65 | } |
66 | } |
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | android:layout_width = "fill_parent" |
04 | android:layout_height = "fill_parent" |
05 | android:orientation = "vertical" > |
06 | < ListView |
07 | android:id = "@android:id/list" |
08 | android:layout_width = "fill_parent" |
09 | android:layout_height = "wrap_content" |
10 | > |
11 | </ ListView > |
12 | </ LinearLayout > |
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | android:layout_width = "match_parent" |
04 | android:layout_height = "match_parent" |
05 | android:orientation = "vertical" > |
06 | < TextView |
07 | android:id = "@+id/nama" |
08 | android:layout_width = "fill_parent" |
09 | android:layout_height = "wrap_content" |
10 | android:textSize = "30dp" /> |
11 | < TextView |
12 | android:id = "@+id/email" |
13 | android:layout_width = "fill_parent" |
14 | android:layout_height = "wrap_content" /> |
15 | </ LinearLayout > |
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < manifest xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | package = "id.jay.emr.jsontutorial" |
04 | android:versionCode = "1" |
05 | android:versionName = "1.0" > |
06 | < uses-sdk android:minSdkVersion = "8" /> |
07 | < uses-permission android:name = "android.permission.INTERNET" /> |
08 | < application |
09 | android:icon = "@drawable/ic_launcher" |
10 | android:label = "@string/app_name" > |
11 | < activity |
12 | android:name = ".MainActivity" |
13 | android:label = "@string/app_name" > |
14 | < intent-filter > |
15 | < action android:name = "android.intent.action.MAIN" /> |
16 | < category android:name = "android.intent.category.LAUNCHER" /> |
17 | </ intent-filter > |
18 | </ activity > |
19 | </ application > |
20 | </ manifest > |
Untuk pembelajaran anda dapat mendownload source codenya dengan link dibawah ini…
Download Source Code Simple Android JSON Tutorial
Tidak ada komentar:
Posting Komentar