Oleh
Latifah Iriani, M. Kom, CSA
2023
Deskripsi Materi
Capaian Pembelajaran
1. JSON.
1. Pendahuluan
REST API dapat digunakan untuk memudahkan koneksi antara berbagai aplikasi. REST
API memungkinkan berbagai aplikasi untuk berkomunikasi dan saling bertukar data melalui
permintaan HTTP yang terstandarisasi. REST API juga menggunakan format data standar seperti
JSON atau XML untuk memudahkan pertukaran data antara klien dan server. Dalam REST API,
data dikirimkan dalam format JSON atau XML dalam body permintaan atau respons HTTP.
Format data ini dapat dengan mudah dibaca dan dipahami oleh klien dan server yang berbeda,
bahkan jika mereka menggunakan bahasa pemrograman yang berbeda. Namun dalam pertemuan
ini kita hanya membahas format JSON.
4. Penulisan JSON
JSON (JavaScript Object Notation) adalah sebuah format pertukaran data yang digunakan untuk
mengirim data antara server dan klien. JSON ditulis dalam format teks dan memiliki sintaks yang
mirip dengan objek JavaScript.
Untuk menuliskan JSON, kita dapat menggunakan format key-value pairs. Setiap key diikuti oleh
tanda titik dua (:) dan diikuti oleh nilai (value) dari key tersebut. Jika terdapat lebih dari satu key-
value pair, setiap pasangan dipisahkan oleh tanda koma (,). JSON selalu dimulai dengan kurung
kurawal ({) dan diakhiri dengan kurung kurawal (}).
Berikut adalah contoh JSON yang menunjukkan informasi tentang seorang pengguna:
Dalam contoh di atas, terdapat tiga key-value pairs: "nama", "umur", dan "pekerjaan". "nama" dan
"pekerjaan" memiliki nilai bertipe string, sedangkan "umur" memiliki nilai bertipe integer.
JSON juga dapat memiliki nested structure, yang berarti sebuah key dapat memiliki nilai dalam
bentuk objek atau array. Berikut adalah contoh JSON yang menunjukkan informasi tentang dua
pengguna :
[
{
"nama": "Latifah Iriani",
"umur": 30,
"nim": "06523111",
"lulus": true,
"hoby": [
"baca buku",
"coding"
],
"pembimbing": {
"pembimbing1": "Andi Sugandi",
"pembimbing2": "Rahmat Agung"
}
},
{
"nama": "Ridho Surya Kusuma",
"umur": 25,
"nim": "06523112",
"lulus": true,
"hoby": [
"baca buku",
"coding"
],
"pembimbing": {
"pembimbing1": "Joko Supriyanto",
"pembimbing2": "Rahmat Agung"
}
}
]
JSON di atas adalah sebuah array yang terdiri dari dua objek. Setiap objek menyimpan
informasi tentang seorang mahasiswa, yaitu nama, umur, nomor induk mahasiswa (nim), status
kelulusan, hobi, dan nama pembimbing.
Untuk membaca JSON tersebut secara detail, berikut ini adalah penjelasan untuk setiap
pasangan key-value pairs dalam setiap objek:
Objek 1:
"nama": "Latifah Iriani" => key "nama" dengan value "Latifah Iriani"
"umur": 30 => key "umur" dengan value 30 (berupa number)
"nim": "06523111" => key "nim" dengan value "06523111" (berupa string)
"lulus": true => key "lulus" dengan value true (berupa boolean)
"hoby": ["baca buku", "coding"] => key "hoby" dengan value array yang berisi dua string:
"baca buku" dan "coding"
"pembimbing": {"pembimbing1": "Andi Sugandi", "pembimbing2": "Rahmat Agung"} =>
key "pembimbing" dengan value objek yang berisi dua key-value pairs: "pembimbing1"
dengan value "Andi Sugandi" dan "pembimbing2" dengan value "Rahmat Agung"
Objek 2:
"nama": "Ridho Surya Kusuma" => key "nama" dengan value "Ridho Surya Kusuma"
"umur": 25 => key "umur" dengan value 25 (berupa number)
"nim": "06523112" => key "nim" dengan value "06523112" (berupa string)
"lulus": true => key "lulus" dengan value true (berupa boolean)
"hoby": ["baca buku", "coding"] => key "hoby" dengan value array yang berisi dua string:
"baca buku" dan "coding"
"pembimbing": {"pembimbing1": "Joko Supriyanto", "pembimbing2": "Rahmat Agung"}
=> key "pembimbing" dengan value objek yang berisi dua key-value pairs: "pembimbing1"
dengan value "Joko Supriyanto" dan "pembimbing2" dengan value "Rahmat Agung"
Dengan informasi di atas, kita dapat memproses data JSON tersebut di dalam program dengan
memanfaatkan key-value pairs yang ada dalam setiap objek. Penting untuk diingat bahwa JSON
harus ditulis dengan benar untuk dapat dibaca dan diinterpretasikan dengan benar oleh mesin. Oleh
karena itu, pastikan untuk memeriksa sintaks dan format JSON sebelum mengirim data antara
server dan klien.
JSON (JavaScript Object Notation) memiliki beberapa tipe data untuk nilai (value) yang
dapat disimpan dalam key-value pairs:
String: nilai (value) bertipe string diapit oleh tanda kutip ("") atau tanda petik tunggal ('').
Contoh: "John", '30', "New York"
Number: nilai (value) bertipe number dapat berupa bilangan bulat atau desimal. Contoh:
30, 3.14
Boolean: nilai (value) bertipe boolean dapat bernilai true atau false. Contoh: true, false
Array: nilai (value) bertipe array diapit oleh kurung siku ([]) dan dapat berisi nilai (value)
apapun, termasuk objek dan array. Contoh: [1, 2, 3], ["John", 30, true]
Objek: nilai (value) bertipe objek diapit oleh kurung kurawal ({}) dan terdiri dari pasangan
key-value pairs. Contoh: {"name": "John", "age": 30}
null: nilai (value) null digunakan untuk menyatakan bahwa tidak ada nilai yang diberikan
untuk sebuah key. Contoh: null
Dalam JSON, tipe data string dan number harus ditulis tanpa tanda kutip atau tanda petik jika
digunakan sebagai nilai (value) pada key-value pairs. Sedangkan tipe data boolean dan null ditulis
seperti halnya dalam bahasa pemrograman, yaitu true, false, dan null.
Penting untuk memperhatikan tipe data dari nilai (value) dalam JSON saat memproses data di
dalam program, karena tipe data yang salah dapat menyebabkan kesalahan dalam proses parsing
dan pengolahan data.
$data = json_encode($mahasiswa);
echo $data;
Kode tersebut merupakan contoh penggunaan fungsi json_encode() pada PHP untuk
mengubah data dalam bentuk array menjadi format JSON. Dalam kode tersebut, terdapat
variabel $mahasiswa yang berisi array asosiatif multidimensi, di mana setiap elemen array
tersebut merepresentasikan data mahasiswa dengan properti nama, nim, dan email.
Kemudian, fungsi json_encode() digunakan untuk mengubah data tersebut menjadi format
JSON. Hasil dari penggunaan fungsi tersebut akan disimpan pada variabel $data. Terakhir,
hasil konversi tersebut ditampilkan pada layar menggunakan fungsi echo. Output yang
dihasilkan dari kode tersebut adalah sebagai berikut:
Berikut ini merupakan contoh penggunaan json_encode pada Data Objects (PDO):
<?php
$dbh = new PDO('mysql:host=localhost;dbname=pabd', 'root', '');
$db = $dbh->prepare('SELECT * FROM mahasiswa');
$db->execute();
$mahasiswa = $db->fetchAll(PDO::FETCH_ASSOC);
$data = json_encode($mahasiswa);
echo $data;
Kode tersebut adalah contoh penggunaan PHP Data Objects (PDO) untuk
mengakses database MySQL dan mengambil data dari tabel mahasiswa. Kemudian, data
yang diambil tersebut diubah ke format JSON menggunakan fungsi json_encode() dan
ditampilkan pada layar menggunakan fungsi echo.
Pertama-tama, terdapat kode untuk membuat koneksi ke database menggunakan
PDO:
$dbh = new PDO('mysql:host=localhost;dbname=pabd', 'root', '');
Kode tersebut akan membuat koneksi ke database MySQL pada localhost dengan
nama database pabd. Parameter kedua dan ketiga pada fungsi PDO merupakan username
dan password yang digunakan untuk mengakses database.
Selanjutnya, terdapat kode untuk mengeksekusi query SELECT dan mengambil
hasilnya:
$db = $dbh->prepare('SELECT * FROM mahasiswa');
$db->execute();
$mahasiswa = $db->fetchAll(PDO::FETCH_ASSOC);
Pada kode tersebut, fungsi prepare() digunakan untuk mempersiapkan query SQL
yang akan dieksekusi. Kemudian, fungsi execute() digunakan untuk mengeksekusi query
tersebut.
Hasil query tersebut kemudian diambil menggunakan fungsi fetchAll() dengan
mode PDO::FETCH_ASSOC, yang akan mengembalikan hasil query dalam bentuk array
asosiatif.
Terakhir, data yang diambil tersebut diubah ke format JSON menggunakan fungsi
json_encode():
$data = json_encode($mahasiswa);
Hasil konversi tersebut kemudian ditampilkan pada layar menggunakan fungsi
echo:
echo $data;
Output yang dihasilkan dari kode tersebut adalah data mahasiswa dalam format
JSON yang diambil dari database MySQL. Bentuk outputnya akan tergantung pada isi data
pada tabel mahasiswa. Berikut contoh keluaran dari database yang dimiliki oleh penulis :
var_dump($mahasiswa);
echo "<br>";
echo $mahasiswa[0]["pembimbing"]["pembimbing1"];
Berikut contoh penggunaan JSON pada javascript yang diberi nama latihan3.html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Latihan JSON</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.6.3.js" integrity="sha256-
nQLuAZGRRcILA+6dMBOvcRh5Pe310sBpanc6+QBmyVM="
crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.3.js" integrity="sha256-
nQLuAZGRRcILA+6dMBOvcRh5Pe310sBpanc6+QBmyVM="
crossorigin="anonymous"></script>
<script src="script.js"></script>
</body>
</html>
Kode HTML tersebut merupakan sebuah template halaman web sederhana yang terdiri dari
dua tag <script> dan satu tag <title>. Tag <title> digunakan untuk menampilkan judul halaman
web. Sedangkan tag <script> digunakan untuk memuat dua file JavaScript yang berasal dari server
jQuery, dan satu file JavaScript yang bernama script.js yang ada di direktori yang sama dengan
file HTML.
Kode ini menunjukkan bahwa halaman web tersebut akan memuat tiga file JavaScript, dan
file script.js akan berisi kode JavaScript yang akan dieksekusi di sisi klien.
Kemudian kita buat file script.js. adapun isi file script.js adalah sebagai berikut :
let mahasiswa = {
nama: "Latifah Iriani",
nim: "06523111",
email: "latifahiriani@sibermu.ac.id"
}
console.log(JSON.stringify(mahasiswa));
Pertama, kita membuat sebuah variabel mahasiswa yang berisi data mahasiswa seperti
nama, nim, dan email.
Kemudian, kita menggunakan method JSON.stringify() untuk mengonversi objek
mahasiswa menjadi sebuah string JSON.
JSON.stringify() adalah method pada objek global JSON yang digunakan untuk
mengonversi objek JavaScript menjadi string JSON.
Terakhir, kita mencetak hasil konversi tersebut ke konsol menggunakan console.log().
Berikut ini adalah sebuah contoh lengkap dari penggunaan XMLHttpRequest (XHR) pada
JavaScript untuk mengambil data JSON dari sebuah file 'coba.json':
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
let mahasiswa = JSON.parse(this.responseText);
console.log(mahasiswa);
}
}