Bayangin server di Amerika nulis pake PHP, browser kamu di Indonesia jalanin JavaScript. Beda bahasa, beda benua, beda mesin — gimana mereka bisa tuker info? Jawabannya: pake "bahasa universal" yang dua-duanya paham. Itu JSON. Format teks polos yang mirip object JavaScript, tapi udah jadi standar internasional — tiap bahasa pemrograman tau cara baca + tulis JSON.
🤔 Sejarah singkat. JSON diciptain Douglas Crockford tahun 2001, awalnya cuma cara hemat buat tuker data ketimbang XML yang verbose. Sekarang? 99% API web pake JSON. Kalau ngomong "API", anggap aja artinya "tuker JSON".
{
"nama": "Budi",
"umur": 17,
"hobi": ["membaca", "coding"]
}
Perbedaan JSON vs Object JavaScript:
- Key di JSON harus menggunakan tanda kutip ganda (
"nama") - JSON tidak bisa menyimpan fungsi atau
undefined - JSON hanya mendukung: string, number, boolean, null, array, object
Konversi di JavaScript:
// Object → JSON string
const obj = { nama: "Budi", umur: 17 };
const jsonStr = JSON.stringify(obj);
// '{"nama":"Budi","umur":17}'
// JSON string → Object
const parsed = JSON.parse(jsonStr);
console.log(parsed.nama); // "Budi"
🎭 Analogi sehari-hari
JSON = kontainer pengiriman standar internasional. Mau kapal dari mana saja, isi apa saja, kontainer ukurannya sama. Server PHP, browser JS, mobile Swift — semua tahu cara buka kontainer JSON.
JSON.stringify = packing barang ke kontainer.
JSON.parse = bongkar kontainer di tujuan.
⚠️ Jebakan yang sering ditemui
1. JSON HARUS double quote — single quote = error.
{ 'nama': "Budi" } // ❌ SyntaxError
{ "nama": "Budi" } // ✅
2. Trailing comma (koma di akhir) tidak boleh.
{ "a": 1, "b": 2, } // ❌
{ "a": 1, "b": 2 } // ✅
3. Fungsi & undefined HILANG saat stringify.
JSON.stringify({ f: () => 1, x: undefined, y: 5 });
// '{"y":5}' — f dan x hilang tanpa peringatan
4. JSON.parse lempar error — bungkus dengan try/catch.
try {
JSON.parse("bukan json");
} catch (e) {
console.log("Format JSON salah");
}
5. Comment // tidak diizinkan di JSON.
{ "x": 1 /* gak boleh */ } // ❌
TL;DR: JSON = format teks universal buat tuker data antar bahasa/sistem. 99% API web pakai JSON. JSON.stringify(obj) (object → string) + JSON.parse(str) (string → object). Aturan ketat: double quote wajib (single = error), no trailing comma, no comment, no function/undefined (hilang silent). JSON.parse lempar SyntaxError kalau format salah — wajib try/catch. Cuma support: string, number, boolean, null, array, object.