FaizBlog LogoFaizBlog
Back to all articles
TutorialJSONWeb Development

Apa Itu JSON? Panduan Lengkap untuk Pemula

Panduan lengkap JSON untuk pemula sampai menengah — sejarah, aturan sintaks, tipe data, contoh nyata, cara parsing di JavaScript/Python/PHP/Go, tips keamanan, hingga format turunan seperti JSONL dan JSON Schema.

AI Insights

Generate a summary and suggested tags for this post.

JSON (JavaScript Object Notation) adalah format pertukaran data berbasis teks yang ringan, mudah dibaca manusia, sekaligus mudah diproses oleh mesin. Meski namanya mengandung "JavaScript", JSON bersifat language-independent — hampir semua bahasa pemrograman modern seperti Python, PHP, Java, Go, hingga Rust punya dukungan bawaan untuk membaca dan menulis JSON.

Di artikel ini kita akan bahas JSON dari nol: sejarah singkat, aturan sintaks, tipe data, contoh penggunaan nyata, cara memproses JSON di berbagai bahasa, hingga tips keamanan dan performa.

1. Sejarah singkat JSON

JSON pertama kali dipopulerkan oleh Douglas Crockford pada awal tahun 2000‑an sebagai subset dari sintaks literal objek di JavaScript. Tujuannya sederhana: menyediakan format pertukaran data yang lebih ringan daripada XML.

Sebelum JSON, XML mendominasi komunikasi antar sistem — mulai dari SOAP web service sampai file konfigurasi. Tapi XML dianggap terlalu verbose: setiap data harus dibungkus tag pembuka dan penutup, sehingga ukuran payload cepat membengkak dan sulit dibaca sekilas.

JSON hadir sebagai alternatif yang jauh lebih ringkas dan cepat menjadi standar de‑facto untuk REST API, konfigurasi aplikasi, hingga penyimpanan data sederhana. Pada tahun 2013, JSON resmi distandardisasi lewat ECMA‑404 dan RFC 8259.

2. Kenapa JSON begitu populer?

Ada beberapa alasan mengapa JSON menjadi format nomor satu di dunia web modern:

  • Ringan — sintaksnya minim, ukuran payload jauh lebih kecil dibanding XML.
  • Mudah dibaca — strukturnya menyerupai objek di banyak bahasa pemrograman.
  • Universal — didukung hampir semua bahasa dan framework tanpa library tambahan.
  • Native di browser — JavaScript bisa mem‑parsing JSON tanpa dependensi apa pun.
  • Cocok untuk API — sebagian besar REST API dan sebagian besar respons GraphQL berbasis JSON.
  • Ramah developer tools — bisa langsung di‑pretty print, di‑diff, dan di‑version control.

Perbandingan singkat JSON vs XML supaya jelas kenapa JSON menang di era web modern:

AspekJSONXML
SintaksRingkas, mirip objekVerbose, banyak tag
Ukuran payloadKecil30–60% lebih besar
Tipe data6 tipe eksplisitSemua string (perlu skema)
Parsing di browserNative (JSON.parse)Perlu DOM parser
KomentarTidak didukungDidukung
Skema/validasiJSON SchemaXSD / DTD
Cocok untukREST API, konfigurasiDokumen kaya, SOAP legacy

3. Tipe data yang dikenali JSON

JSON hanya mengenal enam tipe data. Semua struktur data — sekompleks apa pun — dibangun dari kombinasi enam tipe ini:

TipeContohKeterangan
string"Hello"Wajib pakai kutip ganda.
number42, 3.14, -7Tidak ada perbedaan int/float.
booleantrue, falseHuruf kecil semua.
nullnullMerepresentasikan nilai kosong.
object{ "key": "value" }Kumpulan pasangan key–value.
array[1, 2, 3]Daftar terurut dari nilai.

Yang tidak ada di JSON: undefined, function, Date, BigInt, NaN, Infinity, dan komentar. Nilai‑nilai ini harus dikonversi lebih dulu (biasanya menjadi string atau number).

4. Struktur dasar JSON

Berikut contoh JSON yang menggabungkan semua tipe data di atas:

{
  "name": "Faiz",
  "age": 25,
  "isDeveloper": true,
  "skills": ["JavaScript", "TypeScript", "React"],
  "address": {
    "city": "Jakarta",
    "country": "Indonesia",
    "postalCode": "12345"
  },
  "website": null
}

Beberapa aturan penting yang wajib diingat:

  1. Key harus berupa string dan dibungkus tanda kutip ganda (").
  2. String juga wajib pakai kutip ganda — kutip tunggal ' tidak valid.
  3. Tidak boleh ada trailing comma setelah elemen terakhir.
  4. Tidak boleh ada komentar (// atau /* */) di JSON standar.
  5. Angka tidak boleh diawali + atau memiliki angka nol di depan (kecuali 0 itu sendiri).
  6. Nested tidak terbatas — object dan array boleh saling bersarang sedalam apa pun.

5. JSON vs JavaScript Object — apa bedanya?

Ini kebingungan paling umum bagi pemula. JSON terlihat mirip objek JavaScript, tapi keduanya berbeda:

// JavaScript Object — key tidak wajib pakai kutip
const user = {
  name: 'Faiz',
  age: 25,
  greet() { return 'hi'; }, // boleh ada function
};

// JSON — key WAJIB pakai kutip ganda, tidak boleh function
{
  "name": "Faiz",
  "age": 25
}

Aturannya:

  • Semua JSON valid hampir selalu juga JavaScript valid.
  • Tapi tidak semua objek JavaScript adalah JSON valid.

Ringkasan perbedaan JSON dan JavaScript Object:

AspekJSONJavaScript Object
FormatTeks (string)Struktur di memori
KeyWajib string berkutip gandaBoleh identifier tanpa kutip
Kutip stringHanya "..."Boleh '...', ...
Trailing commaTidak bolehBoleh
Function/methodTidak bolehBoleh
Tipe khusus (Date, BigInt)Tidak dikenalDidukung
KomentarTidak bolehBoleh

6. Contoh penggunaan sehari‑hari

a. Response dari REST API

Saat kamu memanggil GET /api/users/1, server umumnya membalas dengan JSON:

{
  "id": 1,
  "username": "faiz",
  "email": "faiz@example.com",
  "roles": ["admin", "editor"],
  "createdAt": "2026-07-15T10:30:00Z"
}

b. File konfigurasi

Banyak tool memakai JSON untuk konfigurasi — package.json di Node.js, tsconfig.json di TypeScript, atau .vscode/settings.json di VS Code.

{
  "name": "my-app",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "test": "vitest"
  }
}

c. Menyimpan data lokal

JSON sering dipakai untuk localStorage di browser atau file .json di disk.

localStorage.setItem("prefs", JSON.stringify({ theme: "dark", lang: "id" }));
const prefs = JSON.parse(localStorage.getItem("prefs") ?? "{}");

d. Payload untuk webhook & message queue

Layanan seperti Stripe, GitHub, dan Slack mengirim event lewat webhook dalam format JSON.

7. Cara memproses JSON di berbagai bahasa

JavaScript / TypeScript

// String JSON -> objek JavaScript
const data = JSON.parse('{"name":"Faiz","age":25}');

// Objek JavaScript -> string JSON
const json = JSON.stringify({ name: "Faiz", age: 25 });

// Pretty print dengan indentasi 2 spasi
console.log(JSON.stringify(data, null, 2));

Selalu bungkus JSON.parse dengan try/catch — input tidak valid akan melempar SyntaxError dan bisa membuat aplikasi crash.

Python

import json

# String -> dict
data = json.loads('{"name":"Faiz","age":25}')

# dict -> string
raw = json.dumps({"name": "Faiz", "age": 25}, indent=2)

PHP

$data = json_decode('{"name":"Faiz"}', true);   // array asosiatif
$json = json_encode(["name" => "Faiz"]);

Go

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

var u User
json.Unmarshal([]byte(`{"name":"Faiz","age":25}`), &u)
b, _ := json.Marshal(u)

Ringkasan API parsing/serializing di beberapa bahasa populer:

BahasaString → DataData → StringCatatan
JavaScript / TypeScriptJSON.parse(str)JSON.stringify(obj)Native, bungkus dengan try/catch
Pythonjson.loads(str)json.dumps(obj)Modul json standar
PHPjson_decode($str, true)json_encode($data)Argumen kedua true = array asosiatif
Gojson.Unmarshal(b, &v)json.Marshal(v)Butuh struct tag json:"..."
JavaobjectMapper.readValue(...)objectMapper.writeValueAsString(...)Pakai Jackson / Gson
Rustserde_json::from_str(...)serde_json::to_string(...)Butuh crate serde
C# / .NETJsonSerializer.Deserialize<T>(str)JsonSerializer.Serialize(obj)Namespace System.Text.Json

8. Kesalahan umum saat menulis JSON

  • Menaruh trailing comma setelah elemen terakhir.
  • Memakai kutip tunggal untuk string.
  • Menulis komentar // atau /* */ — JSON standar tidak mendukung.
  • Lupa membungkus key dengan kutip ganda.
  • Menggunakan tipe data tidak valid seperti undefined atau function.
  • Menulis angka dengan format tidak valid: .5 (harus 0.5) atau 01 (harus 1).
  • Menaruh nilai NaN atau Infinity — tidak valid di JSON.

Contoh kesalahan sintaks JSON yang paling sering terjadi:

KesalahanContoh salahContoh benar
Trailing comma{ "a": 1, }{ "a": 1 }
Kutip tunggal{ 'a': 1 }{ "a": 1 }
Key tanpa kutip{ a: 1 }{ "a": 1 }
Komentar{ "a": 1 // ok }Hapus komentarnya
Angka tidak valid{ "a": .5 }{ "a": 0.5 }
NaN/Infinity{ "a": NaN }{ "a": null } atau string
undefined/function{ "a": undefined }Hilangkan atau ganti null

9. Tips keamanan & performa

  1. Selalu validasi input JSON dari luar — jangan pernah percaya data user. Gunakan library validasi seperti Zod, Joi, atau Yup.
  2. Batasi ukuran payload di server untuk mencegah serangan denial of service.
  3. Hindari JSON super dalam / super lebar — parsing bisa lambat dan boros memori.
  4. Jangan gunakan eval() untuk mem‑parse JSON. Selalu pakai JSON.parse.
  5. Streaming JSON untuk file besar — pakai library seperti stream-json (Node) atau ijson (Python) supaya tidak memuat seluruh file ke memori.
  6. Gunakan JSON minified di produksi, JSON pretty‑printed hanya di development.

10. Format terkait yang perlu kamu tahu

  • JSONL (JSON Lines) — satu objek JSON per baris. Cocok untuk log dan streaming data.
  • JSON5 — superset JSON yang mengizinkan komentar dan trailing comma. Sering dipakai untuk file konfigurasi.
  • NDJSON — mirip JSONL, populer di dunia data engineering.
  • JSON Schema — cara mendeskripsikan dan memvalidasi struktur JSON.
  • JSONP — teknik lama untuk cross‑domain request; sudah jarang dipakai, digantikan CORS.

Ringkasan format turunan JSON dan kapan dipakai:

FormatDeskripsiKomentar?Trailing comma?Kapan dipakai
JSONStandar (RFC 8259)API, config umum
JSONL / NDJSONSatu objek JSON per barisLog, streaming data
JSON5Superset ramah manusiaFile konfigurasi
JSON SchemaSkema untuk validasiKontrak API, validasi input
JSONPJSON + callback functionLegacy cross‑domain (dihindari)
BSONJSON binerPenyimpanan MongoDB

Kesimpulan

JSON adalah "bahasa universal" untuk bertukar data di dunia web modern. Sintaksnya sederhana, mudah dipelajari dalam hitungan menit, tapi kekuatannya luar biasa — mulai dari komunikasi antar‑server, konfigurasi aplikasi, hingga menyimpan preferensi pengguna.

Yang perlu kamu kuasai untuk mahir JSON:

  1. Enam tipe data dasar dan aturan sintaksnya.
  2. Cara parsing & serializing di bahasa yang kamu pakai.
  3. Cara validasi data JSON dari sumber tidak terpercaya.
  4. Kesalahan umum dan cara menghindarinya.
  5. Format turunan seperti JSONL, JSON5, dan JSON Schema.

Kalau kamu serius belajar web development, menguasai JSON adalah salah satu fondasi wajib yang akan kamu pakai setiap hari — dari memanggil API pertama sampai membangun sistem terdistribusi.