# JSON Adalah: Pengertian, Struktur, Contoh, dan Fungsi

> JSON adalah format teks untuk menyimpan dan mengirim data terstruktur antar aplikasi. Pahami struktur, tipe data, contoh, fungsi, beda XML, dan validasinya.

**URL:** https://www.ciptadusa.com/blog/json-adalah  
**Type:** blog  
**Author:** PT Cipta Dua Saudara  
**Category:** Teknologi  
**Published:** 2026-10-31  
**Cover:** https://www.ciptadusa.com/media/uploads/blog/2026-10/1793413078604-json-adalah-20261031.webp  

## Article

JSON adalah singkatan dari JavaScript Object Notation, yaitu format teks untuk menyimpan dan mengirim data terstruktur antar aplikasi. Data JSON ditulis sebagai pasangan nama dan nilai di dalam kurung kurawal, misalnya `{"nama": "Budi", "aktif": true}`, sehingga bisa dibaca manusia sekaligus diolah mesin. Situs resmi json.org menyebut JSON sebagai format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat oleh komputer ([sumber](https://www.json.org/json-id.html)).

Format ini dipakai saat aplikasi web meminta data ke server lewat API, saat payment gateway mengirim notifikasi webhook, saat menyimpan file konfigurasi, sampai saat menyimpan data semi-terstruktur di database. Artikel ini membahas pengertian JSON, struktur dan tipe datanya, contoh, fungsi, cara kerja parsing, perbedaan JSON dan XML, kesalahan yang membuat JSON tidak valid, serta cara memvalidasinya dengan JSON Schema.

## Pengertian JSON

Secara formal, JSON distandarkan oleh dua dokumen. ECMA-404 dari Ecma International mendefinisikan JSON sebagai sintaks berbasis teks yang ringan dan tidak bergantung pada bahasa pemrograman untuk mendefinisikan format pertukaran data. Sintaks ini berasal dari bahasa ECMAScript (JavaScript), tetapi bisa dipakai di bahasa apa pun ([sumber](https://ecma-international.org/publications-and-standards/standards/ecma-404/)). Dokumen kedua adalah RFC 8259 dari IETF yang terbit Desember 2017 dan menggantikan RFC 7159 ([sumber](https://www.rfc-editor.org/rfc/rfc8259)).

Ada satu hal penting dari ECMA-404: standar itu hanya mengatur sintaks JSON yang valid, bukan arti datanya. Agar pertukaran data berjalan, pihak-pihak yang terlibat perlu menyepakati arti setiap field ([sumber](https://ecma-international.org/publications-and-standards/standards/ecma-404/)). Dalam praktik integrasi, kesepakatan inilah yang dituangkan dalam dokumentasi API atau skema data.

MDN menjelaskan bahwa data JSON bisa disimpan dalam file teks berekstensi `.json` dengan MIME type `application/json` ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)). Media type `application/json` terdaftar di IANA dengan RFC 8259 sebagai spesifikasi acuannya ([sumber](https://www.iana.org/assignments/media-types/application/json)).

### JSON Adalah Bahasa Pemrograman?

Bukan. JSON adalah format data, bukan bahasa pemrograman. JSON tidak punya variabel, perulangan, atau fungsi. MDN mencatat JSON hanya bisa berisi tipe data yang bisa diserialisasi, sehingga fungsi dan objek seperti `Date`, `Set`, atau `Map` tidak termasuk ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)). Karena tidak bergantung pada bahasa tertentu, JSON bisa dibuat di PHP lalu dibaca di Go, Python, Java, atau JavaScript.

## Struktur dan Sintaks JSON

Menurut json.org, JSON dibangun dari dua struktur ([sumber](https://www.json.org/json-id.html)):

- Objek: kumpulan pasangan nama/nilai yang diapit kurung kurawal `{ }`. Di bahasa lain struktur ini dikenal sebagai record, struct, dictionary, hash table, atau associative array.
- Array: daftar nilai yang terurut dan diapit kurung siku `[ ]`. Di bahasa lain dikenal sebagai list, vector, atau sequence.

Setiap nama (key) di dalam objek ditulis sebagai string, diikuti titik dua, lalu nilainya. Antar pasangan dipisahkan koma. Spasi dan baris baru di antara token boleh ditambahkan dan tidak mengubah arti data ([sumber](https://www.rfc-editor.org/rfc/rfc8259)).

### Tipe Data JSON

RFC 8259 menyebut JSON bisa merepresentasikan empat tipe primitif (string, number, boolean, null) dan dua tipe terstruktur (object dan array) ([sumber](https://www.rfc-editor.org/rfc/rfc8259)).

| Tipe | Contoh | Catatan |
| --- | --- | --- |
| String | `"Bandung"` | Wajib memakai tanda kutip ganda |
| Number | `125000`, `4.5`, `-2` | Ditulis dalam notasi desimal, tanpa tanda kutip |
| Boolean | `true`, `false` | Huruf kecil, tanpa tanda kutip |
| Null | `null` | Menandakan nilai kosong |
| Object | `{"kota": "Bandung"}` | Pasangan nama dan nilai |
| Array | `["A", "B", "C"]` | Daftar nilai yang terurut |

Aturan penulisan di tabel ini mengikuti spesifikasi RFC 8259 dan penjelasan MDN ([sumber](https://www.rfc-editor.org/rfc/rfc8259), [sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)).

## Contoh JSON

Berikut contoh data pesanan dalam format JSON. Datanya fiktif dan hanya ilustrasi CDS untuk menunjukkan penggunaan semua tipe data:

```json
{
  "nomor_pesanan": "INV-2026-0042",
  "tanggal": "2026-10-31",
  "pelanggan": {
    "nama": "CV Maju Bersama",
    "kota": "Bandung"
  },
  "item": [
    { "sku": "KRS-01", "nama": "Kursi kantor", "qty": 4, "harga": 850000 },
    { "sku": "MJ-02", "nama": "Meja rapat", "qty": 1, "harga": 2400000 }
  ],
  "lunas": false,
  "catatan": null
}
```

Dari contoh di atas:

- `pelanggan` adalah objek yang bersarang di dalam objek utama (nesting).
- `item` adalah array berisi dua objek.
- `qty` dan `harga` adalah number, `lunas` adalah boolean, `catatan` bernilai null.
- `tanggal` ditulis sebagai string karena JSON tidak punya tipe tanggal. MDN mencatat objek `Date` tidak termasuk tipe data JSON ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)), sehingga format tanggal perlu disepakati di dokumentasi API.

## Fungsi dan Kegunaan JSON

### Pertukaran Data Lewat API

MDN menjelaskan JSON dipakai untuk mengirim data di aplikasi web, misalnya dari server ke klien untuk ditampilkan di halaman, atau sebaliknya ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)). Pola ini menjadi dasar komunikasi antara [frontend](/blog/frontend-adalah) dan [backend](/blog/backend-adalah): frontend mengirim request ke [API](/blog/api-adalah), lalu backend membalas dengan response JSON.

### Payload Webhook

Saat terjadi event, misalnya pembayaran berhasil atau pesan WhatsApp masuk, layanan pihak ketiga mengirim HTTP request ke server Anda. Isi request itu disebut payload. Pembahasan lengkap pola ini ada di artikel [webhook adalah](/blog/webhook-adalah), termasuk contoh payload JSON dari WhatsApp Cloud API.

### Integrasi Antar Sistem

Daftar di registri IANA mencatat JSON dipakai untuk bertukar data antar aplikasi yang ditulis dalam berbagai bahasa, termasuk C, C#, Go, Java, JavaScript, Perl, dan PHP ([sumber](https://www.iana.org/assignments/media-types/application/json)). Karena itu JSON cocok sebagai format bersama saat menghubungkan ERP, CRM, dan aplikasi kasir dalam proyek [integrasi sistem](/blog/integrasi-sistem-adalah) atau lewat lapisan [middleware](/blog/middleware-adalah).

### Penyimpanan di Database

PostgreSQL menyediakan dua tipe kolom: `json` dan `jsonb`. Tipe `json` menyimpan salinan persis teks input, sedangkan `jsonb` menyimpan data dalam format biner terurai yang sedikit lebih lambat saat input tetapi jauh lebih cepat saat diproses karena tidak perlu di-parse ulang. Dokumentasi PostgreSQL menyarankan sebagian besar aplikasi memakai `jsonb`, kecuali ada kebutuhan khusus seperti urutan key yang harus dipertahankan ([sumber](https://www.postgresql.org/docs/current/datatype-json.html)).

### Log dan Data Baris per Baris

Untuk file log, ada varian bernama JSON Lines (newline-delimited JSON). Setiap baris berisi satu nilai JSON yang valid, file memakai encoding UTF-8, dan pemisah barisnya `\n`. Format ini memudahkan pemrosesan data satu record demi satu record ([sumber](https://jsonlines.org/)).

### Data Terstruktur untuk SEO

Di sisi SEO, data terstruktur halaman web bisa ditulis dalam format JSON-LD di dalam tag `<script>`. Google menyebut JSON-LD sebagai format yang direkomendasikan, meski tiga format yang didukung sama saja bagi Google selama markup valid ([sumber](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data?hl=id)).

### Token dan Protokol

JSON juga menjadi dasar beberapa standar lain. JSON Web Token (JWT) di RFC 7519 adalah format ringkas dan aman untuk URL yang membawa klaim antar dua pihak, misalnya untuk autentikasi ([sumber](https://www.rfc-editor.org/rfc/rfc7519)). Model Context Protocol (MCP), protokol yang menghubungkan AI agent dengan tool, mewajibkan semua pesan antara client dan server mengikuti spesifikasi JSON-RPC 2.0 ([sumber](https://modelcontextprotocol.io/specification/2025-06-18/basic), [sumber](https://www.jsonrpc.org/specification)).

## Cara Kerja JSON: Serialisasi dan Parsing

Data di dalam program (objek, array, struct) tidak bisa langsung dikirim lewat jaringan. Data itu perlu diubah dulu menjadi teks JSON, lalu diubah kembali di sisi penerima. MDN menyebut proses mengubah objek menjadi string sebagai serialisasi, dan mengubah string menjadi objek sebagai deserialisasi ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)).

Di JavaScript, dua method bawaan untuk proses ini adalah `JSON.stringify()` dan `JSON.parse()` ([sumber](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify), [sumber](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)):

```javascript
// Serialisasi: objek -> teks JSON
const pesanan = { nomor: "INV-2026-0042", qty: 4, lunas: false };
const teks = JSON.stringify(pesanan);
// '{"nomor":"INV-2026-0042","qty":4,"lunas":false}'

// Parsing: teks JSON -> objek
const data = JSON.parse(teks);
console.log(data.qty); // 4
```

Di Python, modul standar `json` menyediakan `json.dumps()` untuk serialisasi dan `json.loads()` untuk parsing ([sumber](https://docs.python.org/3/library/json.html)). Bahasa lain seperti Go, PHP, dan Java punya fungsi serupa di library standar atau library populernya.

Ada perilaku yang perlu diwaspadai. MDN mencontohkan `JSON.stringify()` mengubah `undefined`, fungsi, dan Symbol di dalam array menjadi `null`, dan akan melempar error jika menemukan nilai BigInt ([sumber](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)). Sementara `JSON.parse()` melempar `SyntaxError` jika teks yang di-parse bukan JSON valid ([sumber](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)).

## Perbedaan JSON dan XML

XML (Extensible Markup Language) adalah format markup yang distandarkan W3C dan juga dipakai untuk pertukaran data ([sumber](https://www.w3.org/TR/xml/)). Perbedaan strukturnya dengan JSON:

| Aspek | JSON | XML |
| --- | --- | --- |
| Bentuk | Pasangan nama/nilai, objek, dan array | Elemen bertag pembuka dan penutup, bisa punya atribut |
| Tipe data | Punya string, number, boolean, null | Isi elemen berupa teks; tipe ditentukan oleh skema |
| Array | Ada bawaan (`[ ]`) | Tidak ada; diwakili elemen berulang |
| Komentar | Tidak diizinkan | Diizinkan (`<!-- -->`) |
| Standar | ECMA-404 dan RFC 8259 | W3C XML 1.0 |
| Pemakaian di JavaScript | `JSON.parse()` bawaan | Perlu parser DOM |

Tabel ini disusun CDS dari spesifikasi JSON ([sumber](https://www.rfc-editor.org/rfc/rfc8259)), MDN ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)), dan spesifikasi W3C XML 1.0 ([sumber](https://www.w3.org/TR/xml/)). Pilihan format di proyek nyata mengikuti sistem yang akan diajak bicara. Jika sistem lama hanya menerima XML, integrasi tetap perlu menyediakan XML.

## Kesalahan yang Membuat JSON Tidak Valid

JSON yang terlihat benar bisa saja ditolak parser karena melanggar aturan sintaks. Berdasarkan aturan yang dicatat MDN, kesalahan berikut membuat JSON tidak valid ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)):

- String dan nama key memakai tanda kutip tunggal. JSON wajib memakai kutip ganda.
- Ada koma di akhir objek atau array (trailing comma), misalnya `{"a": 1,}`.
- Ada komentar `//` atau `/* */`. JSON tidak mengizinkan komentar.
- Memakai nilai `undefined`, `NaN`, atau `Infinity`. Ketiganya tidak termasuk tipe JSON.

RFC 8259 juga menyebut beberapa jebakan interoperabilitas ([sumber](https://www.rfc-editor.org/rfc/rfc8259)):

- Nama key di dalam satu objek sebaiknya unik (SHOULD be unique). Jika ada key ganda, perilaku penerima bisa berbeda-beda. Contohnya, `jsonb` di PostgreSQL hanya menyimpan nilai terakhir dari key yang sama ([sumber](https://www.postgresql.org/docs/current/datatype-json.html)).
- Presisi angka bergantung pada implementasi. RFC 8259 menyarankan tidak mengharapkan presisi atau jangkauan lebih dari angka IEEE 754 binary64 (double precision). Untuk ID panjang atau nominal yang butuh presisi penuh, kirim sebagai string.
- JSON yang dipertukarkan di luar sistem tertutup wajib memakai encoding UTF-8, dan implementasi tidak boleh menambahkan byte order mark (BOM) di awal teks.

## Validasi JSON dengan JSON Schema

JSON yang valid secara sintaks belum tentu benar isinya. Field `qty` bisa saja terkirim sebagai string, atau field wajib hilang. Untuk itu ada JSON Schema, bahasa deklaratif untuk mendefinisikan struktur dan batasan data JSON. Versi terbarunya adalah 2020-12 ([sumber](https://json-schema.org/overview/what-is-jsonschema)).

Contoh skema sederhana untuk item pesanan di atas (ilustrasi CDS):

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["sku", "qty", "harga"],
  "properties": {
    "sku": { "type": "string" },
    "qty": { "type": "integer", "minimum": 1 },
    "harga": { "type": "number", "minimum": 0 }
  }
}
```

Dengan skema seperti ini, backend bisa menolak request yang tidak sesuai sebelum data masuk ke database. Skema yang sama bisa dipakai sebagai dokumentasi kontrak data antara tim frontend, backend, dan pihak ketiga.

Dari sisi keamanan, OWASP menyarankan memakai format pertukaran data standar dan aman seperti JSON jika perlu mengirim data terserialisasi ke pengguna, dibanding format serialisasi bawaan bahasa pemrograman ([sumber](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html)). Meski begitu, data JSON dari luar tetap harus divalidasi sebelum diproses.

## Checklist Memakai JSON di Aplikasi Bisnis

Checklist berikut adalah panduan internal CDS saat merancang API dan integrasi:

1. Sepakati nama field dan formatnya di dokumentasi API, termasuk format tanggal dan zona waktu.
2. Kirim nominal uang dan ID panjang sebagai string atau integer dalam satuan terkecil, bukan angka desimal.
3. Validasi setiap request dan payload webhook dengan JSON Schema atau validator di backend.
4. Pastikan header `Content-Type: application/json` dan encoding UTF-8.
5. Tangani error parsing dengan pesan yang jelas, jangan biarkan aplikasi crash.
6. Catat payload yang gagal diproses di log (dengan data sensitif disamarkan) untuk ditelusuri.
7. Siapkan versi API agar perubahan struktur JSON tidak merusak aplikasi lama.

## JSON di Proyek CDS

Di layanan [jasa pembuatan software custom](/services/software), CDS membangun aplikasi web, mobile, dashboard internal, dan integrasi API, dengan REST API dan webhook sebagai bagian dari stack yang dipakai. Untuk sistem lama yang perlu disambungkan atau dipindahkan, misalnya saat [migrasi data](/blog/migrasi-data-adalah) dari spreadsheet ke aplikasi baru, layanan [konsultasi IT](/services/consulting) CDS membantu memetakan alur data dan arsitekturnya.

CDS juga mengembangkan [Zetta CRM](/incubating/zetta-crm), MCP server berbasis Go untuk AI agent yang diakses lewat endpoint `POST /mcp` dengan API key. Karena memakai MCP, pertukaran pesannya mengikuti format JSON-RPC 2.0 yang berbasis JSON.

## FAQ Seputar JSON

### JSON adalah singkatan dari apa?

JSON adalah singkatan dari JavaScript Object Notation, format teks untuk pertukaran data yang sintaksnya berasal dari JavaScript tetapi bisa dipakai di bahasa pemrograman apa pun ([sumber](https://ecma-international.org/publications-and-standards/standards/ecma-404/)).

### JSON adalah jenis file apa?

File JSON adalah file teks polos berekstensi `.json` dengan MIME type `application/json` ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)). File ini bisa dibuka dengan text editor apa pun.

### JSON adalah format untuk apa?

JSON adalah format untuk menyimpan dan mengirim data terstruktur, misalnya response API, payload webhook, file konfigurasi, data terstruktur SEO (JSON-LD), dan kolom data semi-terstruktur di database.

### Apa itu data JSON?

Data JSON adalah data yang ditulis mengikuti aturan JSON: objek dalam kurung kurawal, array dalam kurung siku, dan nilai berupa string, number, boolean, null, objek, atau array ([sumber](https://www.rfc-editor.org/rfc/rfc8259)).

### Apa beda JSON dan JavaScript object?

JSON adalah teks, sedangkan JavaScript object adalah struktur data di memori program. JSON lebih ketat: key wajib berkutip ganda, tidak boleh ada fungsi, komentar, atau trailing comma ([sumber](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)).

### Apakah JSON bisa dipakai sebagai database?

JSON bisa disimpan di database, misalnya di kolom `jsonb` PostgreSQL ([sumber](https://www.postgresql.org/docs/current/datatype-json.html)). Namun file JSON polos tidak punya fitur database seperti transaksi, indeks, dan kontrol akses, sehingga data bisnis utama tetap perlu disimpan di database.

## Butuh API dan Integrasi Data yang Rapi?

Jika aplikasi Anda perlu bertukar data dengan payment gateway, marketplace, ERP, atau CRM, tim CDS bisa merancang API, skema JSON, dan validasinya sejak awal agar integrasi tidak rapuh. Mulai dari [jasa pembuatan software custom](/services/software), diskusikan arsitekturnya lewat [konsultasi IT](/services/consulting), atau lihat dulu [karya CDS](/works).


---

*Markdown version of https://www.ciptadusa.com/blog/json-adalah — generated for AI agents and LLM crawlers.*
