MASIGNCLEAN101

Pengenalan JSON | Menggunakan JSON | Memahami JSON di PHP

JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman JavaScript, Standar ECMA-262 Edisi ke-3 - Desember 1999. JSON merupakan format teks yang tidak bergantung pada bahasa pemprograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll. Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data.
  JSON terbuat dari dua struktur:
  1.    Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar berkunci (keyed list), atau associative array.
  2. Daftar nilai terurutkan (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence).

Struktur-struktur data ini disebut sebagai struktur data universal. Pada dasarnya, semua bahasa pemprograman moderen mendukung struktur data ini dalam bentuk yang sama maupun berlainan. Hal ini pantas disebut demikian karena format data mudah dipertukarkan dengan bahasa-bahasa pemprograman yang juga berdasarkan pada struktur data ini.
JSON menggunakan bentuk sebagai berikut:
  •     Objek adalah sepasang nama/nilai yang tidak terurutkan. Objek dimulai dengan { (kurung kurawal buka) dan diakhiri dengan } (kurung kurawal tutup). Setiap nama diikuti dengan : (titik dua) dan setiap pasangan nama/nilai dipisahkan oleh , (koma).
    Object
  • Array (Larik ) adalah kumpulan nilai yang terurutkan. Larik dimulai dengan [ (kurung kotak buka) dan diakhiri dengan ] (kurung kotak tutup). Setiap nilai dipisahkan oleh, (koma).
    Array
  • Nilai (value) dapat berupa sebuah string dalam tanda kutip ganda, atau angka, atau true atau false atau null, atau sebuah objek atau sebuah larik. Struktur-struktur tersebut dapat disusun bertingkat.
    Nilai (value)
  • String adalah kumpulan dari nol atau lebih karakter Unicode, yang dibungkus dengan tanda kutip ganda. Di dalam string dapat digunakan backslash escapes "\" untuk membentuk karakter khusus.
    String
    Sebuah karakter mewakili karakter tunggal pada string. String sangat mirip dengan string C atau Java.
  • Angka (Number) adalah sangat mirip dengan angka di C atau Java, kecuali format oktal dan heksadesimal tidak digunakan.
    Angka (Number)
Spasi kosong (whitespace) dapat disisipkan di antara pasangan tanda-tanda tersebut, kecuali beberapa detil encoding yang secara lengkap dipaparkan oleh bahasa pemprograman yang bersangkutan.

Memahami JSON di PHP.
Dalam artinya lain, JSON dapat kita katakan sebagai pemaketan data yang bertujuan untuk menjembatani antara antar muka dengan service background seperti database server, sama halnya dengan penggunaan xml. Dalam Json, yang kita perlu pahami hanya dua kunci yaitu key dan value. key kalau digambarkan secara sederhana adalah nama field dan value adalah isinya.
Documentasi Penggunaan JSON di php dapat dilihat yg lebih detailed di
Pada dasarnya Json sendiri adalah data berbentuk String untuk parsing-parsing data. kita dapat membuat Json hanya dengan menggunakan variabel string yang ditulis secara manual seperti dibawah ini
echo “{nama:’wilis’}”;
Penggunaan contoh diatas kurang dianjurkan karena tidak efesien, penggunaan yang dianjurkan adalah menggunakan fungsi json_encode
$result = Array() //definisi result sebagai array
$result['nama'] = “wilis”; //membuat array dengan key nama valuenya budi
echo json_encode($result); //mengubah array kedalam format json (string)
Menggunakan object

Contoh Penggunaan JSON di Android dengan PHP
- siapkan databasenya.
create databases latihan;
uses latihan;
CREATE TABLE people
(
id int(11) NOT NULL Primary Key,
name varchar(20) NOT NULL,
sex int(11) NOT NULL,
birthyear int(11) NOT NULL
)
- Lakukan proses insert data ke database misalnya seperti contoh berikut
INSERT INTO `people`
(`id`, `name`, `sex`, `birthyear`)
VALUES
(1, 'Safaat H', 1, 1970),
(2, 'Santoso', 2, 2010),
(3, 'Nazruddin Safaat H', 1, 1996),
(4, 'Budi Santoso', 2, 1982);
- Persiapkan file phpnya dengan parse json mysqlcon.php.
<?php
      mysql_connect("127.0.0.1","root","");
      mysql_select_db("latihan");
      $q=mysql_query("SELECT * FROM people WHERE birthyear >'".$_REQUEST['year']."'");
      while($e=mysql_fetch_assoc($q))
             $output[]=$e;
             print(json_encode($output));
             mysql_close();
?>
    

dari query data diatas yang akan kita ambil data adalah yg kelahirannya diatas tahun yang dikirim dari program, dan datanya yang dimasukkan kedalam array json.
- Persiapkan file java untuk koneksinya
KonekActivity.java

 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.TextView;
 
public class KonekActivity extends Activity {
/** Called when the activity is first created. */
    
   TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // Create a crude view - this should really be set via the layout resources 
    // but since its an example saves declaring them in the XML. 
    LinearLayout rootLayout = new LinearLayout(getApplicationContext()); 
    txt = new TextView(getApplicationContext()); 
    rootLayout.addView(txt); 
    setContentView(rootLayout); 
 
    // Set the text and call the connect function. 
    txt.setText("Connecting...");
  //call the method to run the data retreival
    txt.setText(getServerData(KEY_121));
 
}
public static final String KEY_121 = "http://10.0.2.2/hellomysql/mysqlcon.php"; //i use my real ip here
 
 
private String getServerData(String returnString) {
    
   InputStream is = null;
    
   String result = "";
    //the year data to send
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("year","1970"));
 
    //http post
    try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(KEY_121);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
 
    }catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
    }
 
    //convert response to string
    try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
            }
            is.close();
            result=sb.toString();
    }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
    }
    //parse json data
    try{
            JSONArray jArray = new JSONArray(result);
            for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);
                   Log.i("log_tag","id: "+json_data.getInt("id")+
                            ", name: "+json_data.getString("name")+
                           ", sex: "+json_data.getInt("sex")+
                            ", birthyear: "+json_data.getInt("birthyear")
                    );
                     
                  // Log.i("log_tag",json_data.getInt("id")+ json_data.getString("name")+json_data.getInt("sex")+json_data.getInt("birthyear")); 
                    
                   //Get an output to the screen
                    returnString += "\n\t" + jArray.getJSONObject(i);
            }
    }catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }
    return returnString;
}      
}

sesuai coding data yang dilakukan yang akan ditampilkan adalah data yang birthdaynya diatas 1970 seperti tampilan data berikut :
JSON





Sumber : (http://nsafaat.wordpress.com/2011/09/07/menggunakan-json/)
               (http://www.json.org/json-id.html)
Share This :
Apradiz Renfaan

Penikmat Kopi dan Teh