Live Traffic

Our Story

Ceremony

Search

Just Married

Menggunakan JSON untuk transfer data/object dari PHP ke Java

by - June 01, 2010

Oleh Erwin Komaruloh

Pengenalan JSON
JSON (JavaScript Object Notation) adalah format transfer data yang ringan. Jika dibandingkan dengan XML JSON jauh lebih sederhana, sehingga (seharusnya) lebih ringan dari XML. Tujuan dari JSON adalah satu, yaitu mentransfer object (sebenarnya lebih mirip struct dalam bahasa C/C++).
Untuk lebih jelas tentang JSON dan spesifikasinya kunjungi http://json.org, untuk bahasan tentang perbandingan antara JSON dan XML lihat JSON and XML atau JSON vs. XML as a data interchange format.
JSON di PHP
Untuk menggunakan JSON di PHP sangatlah mudah. Syaratnya adalah ektensi JSON untuk PHP harus sudah terinstall. Secara default PHP versi 5.2.x sudah mengikutsertakan ektensi JSON. Tentu saja ada berbagai utilitas yang ditawarkan selain yang merupakan bawaan PHP. Namun tulisan ini untuk membahas penggunaan JSON dalam PHP, dan karena JSON bawaan PHP dirasa cukup sebagai pengantar maka dalam tulisan ini hanya akan digunakan JSON bawaan PHP.
PHP menyertakan dua fungsi untuk menulis dan membaca format JSON. json_encode akan mengubah variabel PHP kedalam format JSON. Contoh :
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
kode diatas akan menghasilkan output :
{"a":1,"b":2,"c":3,"d":4,"e":5}
Perhatikan bahwa array yang di-encode adalah associate array sehingga yang dihasilkan adalah JSON-object, bukan JSON-array. Bila kita gunakan kode berikut :
$arr = array('f','g','h','i','j');
echo json_encode($arr);
?>
maka outputnya adalah JSON-array :
["f","g","h","i","j"]
Sedangkan json_decode melakukan hal sebaliknya. Contoh :
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
kode diatas akan menghasilkan output :
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
JSON di JAVA
Tidak seperti PHP yang mendukung JSON secara native, Java memerlukan class/paket tambahan untuk menggunakan JSON. Dalam tulisan ini akan digunakan class dari org.json. Kelas-kelas berikut harus disertakan dalam classpath :

JSONObject.java
JSONArray.java
JSONStinger.java
JSONWriter.java
JSONTokener.java
JSONException.java
JSONString.java
Selain itu ada juga beberapa kelas tambahan untuk pertukaran data dengan format lain, seperti :
CDL.java Merubah JSONArray dari/ke format CDL (comma delimited array).
XML.java Merubah JSONArray dari/ke format XML.
XMLTokener.java Menyediakan method tambahan untuk mem-parsing XML.
HTTP.java Merubah header HTTP dari/ke JSONObject.
HTTPTokener.java Menyediakan tambahan untuk mem-parsing header HTTP.
Cookie.java Merubah cookie browser menjadi JSONObject dan sebaliknya.
CookieList Merubah list (daftar) cookie browser menjadi JSONObject dan sebaliknya.

Untuk membuat sebuah JSONObject kita bisa menggunakan method put() dari
kelas JSONObject seperti :
myString = new JSONObject().put("JSON", "Hello, World!").toString();
yang menghasilkan String
{"JSON": "Hello, World"}.
Selain itu kita juga bisa membuat JSONObject dari subset(bagian) JSONObject lainnya, dari JSONTokener, java.util.map, java bean, object java dengan menggunakan reflection, dan juga dari JSON text string. Yang terakhir ini adalah kunci dari transfer data/object dari bahasa pemrograman lain, dan akan dibahas di bab tersendiri.
NOTE : Harap dibedakan antara JSONObject dengan JSON-object itu sendiri. Karena JSON-object adalah string dengan format tertentu sementara JSONObject merupakan kelas java yang mempresentasikan JSON-object.
Untuk membuat JSONArray caranya hampir sama dengan JSONObject,
JSONArray JArray = new JSONArray(); JArray.put("Hello"); JArray.put(1,"World");myString = JArray.toString();
akan menghasilkan String
["Hello","World"].
JSON Validator
Ada kalanya kita ingin memastikan JSON-object atau JSON-array yang kita buat adalah valid. Untuk itu kita memerlukan sebuah JSON Validator, salah satu yang tersedia adalah “jsonval” yang dibuat oleh Ben Spencer. Source codenya bisa diambil di sini.
Untuk menggunakannya kita harus meng-kompile file-file jsonval terlebih dahulu. Caranya adalah masuk dalam direktori jsonval dan ketik ‘make’. Bila berhasil maka akan ada sebuah file binary bernama jsonval. Cara menggunakannya dengan menyediakan nama file yang berisi JSON string.
jsonval namafile
NOTE : Saya menggunakan tool ini dalam lingkungan linux (UBUNTU 7.10), penggunaan di lingkungan lain harap disesuaikan, terutama cara compile dan menjalankan tool ini.
Memproses JSON string yang dibuat oleh PHP di Java
Kita akan menggabungkan semua ilmu yang baru saja kita dapatkan untuk mentransfer data dari PHP ke Java. Sebagai permulaan kita akan membuat sebuah file di PHP yang menyediakan JSON string.

Class JsonObject {
public $varNumberOne = "Numero uno";
public $varNumberTwo = 2;
}
$someObject = new JSonObject();
echo json_encode($someObject);
?>
Anggota kelas(variabel) harus public agar bisa dibaca oleh json_encode(). Untuk kelas dengan visibility private yang mengikuti aturan get/set ala java bean bisa menggunakan PHP reflection, keterangan lebih lanjut baca
PHP: use reflection to serilaize object data as JSON. Kode diatas menghasilkan :
{"varNumberOne":"Numero uno","varNumberTwo":2}
Untuk sisi java (potongan kode/tidak lengkap):
try {
URL jSonString = new URL("http://192.168.0.78/Json.php");
BufferedReader in = new BufferedReader(new InputStreamReader(jSonString.openStream()));
while((inputLine = in.readLine()) != null){
try{
jsonItem = new JSONObject(inputLine);
if(jsonItem.has("varNumberOne"))
System.out.println("varNumberOne : "jsonItem.get("varNumberOne");
if(jsonItem.has("varNumberTwo"))
System.out.println("varNumberTwo : "jsonItem.get("varNumberTwo");
} catch(JSONException e){
e.printStackTrace();
}
}
} catch (Exception e){
out.println(e.getMessage());
}
Potongan kode diatas akan menghasilkan :
varNumberOne : Numero uno
varNumberTwo : 2
Yang dilakukan kode tersebut adalah membaca output dari sebuah URL dan mem-parsing hasilnya kedalam sebuah JSONObject. Dengan sedikit modifikasi kita bisa membuat PHP membaca JSON string yang dikirimkan dari Java.
Selamat mencoba.
referensi:
http://json.org
http://www.json.org/java/index.html
http://code.google.com/support/bin/answer.py?answer=66848&topic=11530
http://www.oreilly.com/pub/h/5329

You May Also Like

1 comments