Encode dan Decode JSON Data dengan Java - Elang Sakti
Download Ebook Belajar Arduino PDF, Arduino untuk pemula
Jasa Pembuatan Program Arduino, pemrograman Arduino
# Hack Your Skills! to be Professional Mechatronics

Encode dan Decode JSON Data dengan Java

11 komentar
Sebelumnya kita telah mempelajari tentang bagaimana cara kerja dan format JSON. Bagi yang belum mengikuti pembahasannya, diharap menengoknya terlebih dahulu di Bacaan Wajib Programmer : Mengenal Data JSON Lebih Dekat. Untuk kali ini kita langsung ke koding dan sedikit penjelasannya. Semoga bermanfaat. :)

Untuk Java, yang kita gunakan pada percobaan kali ini yaitu menggunakan API JSON yang bernama json-simple dalam bentuk jar file, bisa langsung didownload di code.google.com. Dengan bantuan API ini, kita lebih mudah dalam memprogram tentunya. Setelah didownload, tambahkan, jar tersebut ke library editor kita. Jika menggunakan netbean, di bagian project - Library - Klik kanan, lalu Add Jar/Folder. Setelah itu ambil jar json-simple yang telah kita download.

Encode dan Decode JSON Data dengan Java

Setelah itu, siapkan database yang akan dibuat. Buatlah database dengan isi sebagai berikut:
Script Encode dan Decode JSON Data dengan Java


Atau bisa dengan menjalankan perintah SQL serperti di bawah ini.
CREATE DATABASE /*!32312 IF NOT EXISTS*/`bukubase` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `bukubase`;

/*Table structure for table `daftar_buku` */

DROP TABLE IF EXISTS `daftar_buku`;

CREATE TABLE `daftar_buku` (
  `buku_kode` int(11) NOT NULL,
  `buku_judul` varchar(100) DEFAULT NULL,
  `buku_penerbit` varchar(100) DEFAULT NULL,
  `buku_tahun` year(4) DEFAULT NULL,
  PRIMARY KEY (`buku_kode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*Data for the table `daftar_buku` */

insert  into `daftar_buku`(`buku_kode`,`buku_judul`,`buku_penerbit`,`buku_tahun`) values (1,'Wordpress Advanced','Neomedia',2001),(2,'PHP For Evil Genius','Socka Inc.',1999),(3,'Linux Kernel For Breakfast','Socka Inc.',2009),(4,'Play With Perl Undercover for Evil genius','Socka Inc.',2009),(5,'Android Cook Book For Mother','Dopler Crook',2008);

Berikut ini contoh script java untuk melakukan encode dan decode JSON.
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedHashMap;
import org.json.simple.*;
import org.json.simple.parser.JSONParser;

/**
 *
 * @author x86, haripinter in case :P
 * 
 */
public class Json {

    /**
     * @param args the command line arguments
     */

    // class untuk pengumpulan data sebelum diencode ke format JSON
    // input : String[] key -> String[] value
    static class pushdata implements JSONStreamAware{
        private String[] key;
        private String[] value;

        public pushdata(String[] key, String[] value){
            this.value = value;
            this.key  = key;
        }

        public void writeJSONString(Writer writer) throws IOException {
            LinkedHashMap obj = new LinkedHashMap();
            for(int i=0; i<key.length; i++){
                obj.put(key[i], value[i]);
            }
            JSONValue.writeJSONString(obj, writer);
        }
    }

    public static void main(String[] args) {
        String host = "localhost";
        String debe = "bukubase";
        String user = "root";
        String pass = "";
        Connection con = null;
        Statement sta = null;
        try{
            Class.forName("org.gjt.mm.mysql.Driver");
            con = DriverManager.getConnection("jdbc:mysql://"+host+"/"+debe,user,pass);
            sta = con.createStatement();
        }catch(Exception e){
        }

        try{
            System.out.println("====================================");
            System.out.println("Sebelum diencode menjadi format JSON");
            System.out.println("====================================");
            // inisialisasi JSONArray dan pengambilan data dari database
            JSONArray js = new JSONArray();
            ResultSet res = sta.executeQuery("select * from daftar_buku order by buku_kode");
            while(res.next()){
                //cetak sebelum mnejadi string JSON
                System.out.println(res.getString("buku_kode"));
                System.out.println(res.getString("buku_judul"));
                System.out.println(res.getString("buku_penerbit"));
                System.out.println(res.getString("buku_tahun"));

                // membuat key dan value untuk dipush ke json
                String[] key = {
                    "buku_kode",
                    "buku_judul",
                    "buku_penerbit",
                    "buku_tahun"
                };
                String[] value = {
                    res.getString("buku_kode"),
                    res.getString("buku_judul"),
                    res.getString("buku_penerbit"),
                    res.getString("buku_tahun")
                };

                // kelompokkan data untuk dibuat json
                js.add(new pushdata(key,value));
            }

            // encode ke format JSON
            StringWriter hasil = new StringWriter();
            js.writeJSONString(hasil);
            String jsons = hasil.toString();

            System.out.println();
            System.out.println("====================================");
            System.out.println("Setelah diencode menjadi format JSON");
            System.out.println("====================================");
            System.out.println(jsons);
            System.out.println();

            // decode json array
            // inisialisasi dengan memparsing array JSON
            JSONParser jpars = new JSONParser();
            Object object = jpars.parse(jsons);
            // JSON dijadikan array objek kemudian kita ambil datanya
            System.out.println("====================================");
            System.out.println("Setelah didecode menjadi format biasa");
            System.out.println("====================================");
            JSONArray jsonArr = (JSONArray) object;
            for(int i=0; i<jsonArr.size(); i++){
                // ekstraksi array objek, menjadi objek...
                JSONObject obj = (JSONObject) jsonArr.get(i);
                System.out.println(obj.get("buku_kode"));
                System.out.println(obj.get("buku_judul"));
                System.out.println(obj.get("buku_penerbit"));
                System.out.println(obj.get("buku_tahun"));
            }
        }catch(Exception e){

        }
    }
}

run:
====================================
Sebelum diencode menjadi format JSON
====================================
1
Wordpress Advanced
Neomedia
2001-01-01
2
PHP For Evil Genius
Socka Inc.
1999-01-01
3
Linux Kernel For Breakfast
Socka Inc.
2009-01-01
4
Play With Perl Undercover for Evil genius
Socka Inc.
2009-01-01
5
Android Cook Book For Mother
Dopler Crook
2008-01-01

====================================
Setelah diencode menjadi format JSON
====================================
[{"buku_kode":"1","buku_judul":"Wordpress Advanced","buku_penerbit":"Neomedia","buku_tahun":"2001-01-01"},{"buku_kode":"2","buku_judul":"PHP For Evil Genius","buku_penerbit":"Socka Inc.","buku_tahun":"1999-01-01"},{"buku_kode":"3","buku_judul":"Linux Kernel For Breakfast","buku_penerbit":"Socka Inc.","buku_tahun":"2009-01-01"},{"buku_kode":"4","buku_judul":"Play With Perl Undercover for Evil genius","buku_penerbit":"Socka Inc.","buku_tahun":"2009-01-01"},{"buku_kode":"5","buku_judul":"Android Cook Book For Mother","buku_penerbit":"Dopler Crook","buku_tahun":"2008-01-01"}]

====================================
Setelah didecode menjadi format biasa
====================================
1
Wordpress Advanced
Neomedia
2001-01-01
2
PHP For Evil Genius
Socka Inc.
1999-01-01
3
Linux Kernel For Breakfast
Socka Inc.
2009-01-01
4
Play With Perl Undercover for Evil genius
Socka Inc.
2009-01-01
5
Android Cook Book For Mother
Dopler Crook
2008-01-01
BUILD SUCCESSFUL (total time: 1 second)

Jika ada yang kurang jelas, silakan isi bertanya di bagian komentar... :). Untuk Encode dan decode JSON dengan PHP, bisa cek di Encode dan Decode JSON dengan PHP.

Written by ElangSakti
Encode dan Decode JSON Data dengan Java
Bahasan: Sebelumnya kita telah mempelajari tentang bagaimana cara kerja dan format JSON. Bagi yang belum mengikuti pembahasannya, diharap menengokn...
Published at Minggu, 10 Maret 2013, Updated at Minggu, 10 Maret 2013
Reviewed by dr. on
Rating: 4.7

11 komentar :

  1. makasih banyak tutorialnya bro simple and mantab pokoknya

    BalasHapus
  2. gan bisa gak kita decode data json via java tapi encode lewat php,, kita ambil url encode data dari php lalu di decode ke java?

    BalasHapus
    Balasan
    1. bisa, coba cari di "Cari Blog Ini" dengan kata kunci JSON

      Hapus
  3. mas, kalo di tambah pagination bisa ?

    BalasHapus
    Balasan
    1. apanya yang mau dikasi pagination mas?

      Hapus
  4. Makasih nih mas udh di respon hehe, iya seperti contoh di atas kan buku. misalkan bukunya ada ribuan itu kan pasti scroll ke bawah terus. jadi di kasih limit di sql gtu gmana mas?

    BalasHapus
    Balasan
    1. Bisa mas, limitnya langsung di perintah SQLnya. Jadi setiap pindah halaman datanya berubah, kekurangannya tentu ketika mau nge-load data harus koneksi ke database dulu.

      Atau, data diload seluruhnya, hanya saja ditampilkan perhalaman, nanti pembatasan data per-halaman-nya ada di perulangan. Tapi untuk cara ini, memory di client banyak terkuras.

      Hapus
  5. oh gtu mas, gpp dia load tergantung speed koneksinya kan hahaha.
    Jadi tambahin limit ya, nah berarti ambil variabel page/hal nya pake json juga ya mas klo biar dibaca dijava?
    Contoh potongan programnya ada ga mas?

    BalasHapus
  6. kata temen saya sih bisa pakai crud di java, agan tau crud? ane buta java kwkw.

    BalasHapus
    Balasan
    1. CRUD itu singkatan dari Create, Read, Update, dan Delete dalam SQL, jadi ya perintah Create (table/database), Select * ..., Update .... , Delete From ... dst.

      Hapus