- Tuesday, October 31, 2017

Membuat JSON dan Nested JSON dengan CodeIgniter untuk kebutuhan parsing data ke android


Awalnya saya ragu untuk memposting pembuatan JSON dengan CodeIgniter, tapi mungkin masih ada yang membutuhkan. Nah saya lebih terbiasa dengan FrameWork CodeIgniter oleh karena itu saya membuatnya dengan Framework ini.

Sebagai kasus saya ingin membuat JSON untuk dipanggil aplikasi android xamarin. Misalkan saya ingin mengambil data detail dari sebuah lokasi wisata. Untuk table MySQL nya adalah sebagai berikut.


Saya telah memiliki 18 field pada tabel database dengan naa tb_nama_wisata. Kemudian kita masukan beberapa data sebagai berikut.



Pada Framework CodeIgniter saya membutuhkan sebuah Model dengan nama M_wisata.php

M_wisata.php


<?php

class M_wisata extends CI_Model{

  var $tabel = 'tb_nama_wisata';
  function tampil_data(){
  return $this->db->get('tb_nama_wisata');
  }

  function get_data($where,$table){
        return $this->db->get_where($table,$where);
     }

}

Kemudian Buatlah sebuah Controller dengan nama Api.php

Api.php

//Generate JSON untuk wisata berdasarkan id
 function getWisataDetail($id)
    {
        $where = array('id' => $id);
        $url = 'https://banyu.center/pariwisatajateng/assets/images/wisata/';
        $harga = 'Harga Tiket :';
        $json_data = $this->m_wisata->get_data($where,'tb_nama_wisata')->result();
            $arr = array();
            foreach ($json_data as $result) {
            $arr[] = array(
                   'id' => $result->id,
                   'id_kabupaten' => $result->id_kabupaten,
                   'id_jenis_wisata' => $result->id_jenis_wisata,
                   'nama_wisata' => $result->nama_wisata,
                   'harga_tiket' => $harga.$result->harga_tiket,
                   'jam_buka'=> $result->jam_buka,
                   'jam_tutup'=> $result->jam_tutup,
                   'alamat'=> $result->alamat,
                   'no_telp'=> $result->no_telp,
                   'no_wa'=> $result->no_wa,
                   'instagram'=> $result->instagram,
                   'facebook'=> $result->facebook,
                   'twitter'=> $result->twitter,
                   'email'=> $result->email,
                   'website'=> $result->website,
                   'foto' => $url.$result->foto,
                   'video'=> $result->video,
                   'keterangan'=> $result->keterangan
                    );
            }
               
        $data = json_encode($arr);
        echo "{"detail_wisata":" . $data . "}";
    }

Jika kalian panggil di Browser dengan url

http://namawebsitemu.com/api/getWisataDetail/2 maka akan menghasilkan data JSON sebagai berikut





Lalu Bagaimana jika membuat Nested JSON atau JSOn bersarang dengan CodeIgniter. Caranya cukup merubah generate loppingnya saja. Misalkan saya buat sebuah fungsi lagi dengan nama

getWisataDetailSample($id)

//Nested JSON 
 function getWisataDetailSample($id)
    {
        $where = array('id' => $id);
        $url = 'https://banyu.center/pariwisatajateng/assets/images/wisata/';
        $harga = 'Harga Tiket :';
        $datax = $this->m_wisata->get_data($where,'tb_nama_wisata')->result();
        $datas = array();
        foreach ($datax as $results) {
            $arrs[] = array(
                   
                   'instagram'=> $results->instagram,
                   'facebook'=> $results->facebook,
                   'twitter'=> $results->twitter,
                   'email'=> $results->email,
                   'website'=> $results->website
                   
                    );
            }
            
        $datay = json_encode($arrs);
        
        $json_data = $this->m_wisata->get_data($where,'tb_nama_wisata')->result();
            $arr = array();
            foreach ($json_data as $result) {
            $arr[] = array(
                   'id' => $result->id,
                   'id_kabupaten' => $result->id_kabupaten,
                   'id_jenis_wisata' => $result->id_jenis_wisata,
                   'nama_wisata' => $result->nama_wisata,
                   'harga_tiket' => $harga.$result->harga_tiket,
                   'jam_buka'=> $result->jam_buka,
                   'jam_tutup'=> $result->jam_tutup,
                   'alamat'=> $result->alamat,
                   'no_telp'=> $result->no_telp,
                   'no_wa'=> $result->no_wa,
                   'sosial_media' => json_decode($datay),
                   'foto' => $url.$result->foto,
                   'video'=> $result->video,
                   'keterangan'=> $result->keterangan
                    );
            }
               
        $data = json_encode($arr);
        echo "{\"detail_wisata\":" . $data . "}";
    }

Maka hasilnya adalah sebagai berikut



Selamat mencoba

Salam

No comments:

Post a Comment

Mohon melakukan komentar dengan bahasa yang mudah dipahami, santun dan dengan bahasa yang baik.