JSON (JavaScript Object Notation) — adalah format teks ringan untuk pertukaran data, berdasarkan sintaks objek JavaScript. Ini digunakan di mana-mana: dari REST API dan file konfigurasi hingga penyimpanan data di database dan aplikasi mobile. Menurut situs resmi JSON, format ini tidak bergantung pada bahasa pemrograman dan didukung oleh hampir semua platform modern. JSON telah menjadi standar de facto untuk transmisi data antara klien dan server.
Poin utama
JSON — adalah format teks untuk merepresentasikan data terstruktur, berdasarkan sintaks JavaScript. Meskipun berasal dari JavaScript, format ini sepenuhnya independen dari bahasa — parser dan serialiser ada untuk semua bahasa pemrograman populer.
Sejarah JSON dimulai pada awal tahun 2000-an, ketika Douglas Crockford memisahkan subset sintaks JavaScript untuk pertukaran data. Pada tahun 2013, format ini distandarisasi sebagai ECMA-404, dan kemudian sebagai ISO/IEC 21778:2017. Nama ini merupakan singkatan dari JavaScript Object Notation.
Keuntungan utama JSON adalah sintaksnya yang minimalis. Untuk mendeskripsikan data hanya digunakan enam tipe: string, angka, boolean, null, array dan objek. Ini cukup untuk merepresentasikan struktur data apa pun yang digunakan dalam aplikasi.
Sintaks JSON sangat sederhana: data direpresentasikan sebagai pasangan kunci-nilai, di mana kunci adalah string dalam tanda petik ganda, dan nilai adalah salah satu dari enam tipe dasar. Objek ditempatkan dalam kurung kurawal, array dalam kurung siku. String wajib menggunakan tanda petik ganda, tanda petik tunggal tidak diizinkan.
Angka dalam JSON bisa berupa bilangan bulat atau floating-point, positif atau negatif, dengan notasi eksponensial. Nilai boolean direpresentasikan dengan true dan false, dan ketiadaan nilai dengan null. Array berisi kumpulan nilai yang terurut dari jenis apa pun, termasuk array dan objek bersarang.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "dukungan untuk bersarang"
}
}
| Tipe | Contoh | Deskripsi |
|---|---|---|
| String | “teks” |
Dalam tanda petik ganda, dengan urutan escape |
| Angka | 42 |
Bilangan bulat, floating-point, eksponensial |
| Boolean | true |
true atau false — tanpa tanda petik |
| null | null |
Tidak ada nilai |
| Objek | {} |
Kumpulan pasangan kunci-nilai tidak terurut |
| Array | [] |
Daftar nilai terurut |
JSON adalah format pertukaran data utama untuk REST API dalam pengembangan mobile dan web. Server mengirimkan JSON di body respons, klien — di body permintaan. Header Content-Type standar untuk JSON adalah application/json.
REST API modern menggunakan JSON untuk mengirimkan semua jenis data: dari daftar sederhana hingga struktur bersarang kompleks dengan hubungan antar entitas. Pustaka klien (misalnya Axios di JavaScript atau Retrofit di Android) secara otomatis melakukan serialisasi dan deserialisasi JSON, membebaskan pengembang dari parsing manual.
Keuntungan penting JSON di REST API adalah kemampuan transmisi data parsial (partial response) melalui parameter permintaan, serta dukungan untuk sumber daya bersarang tanpa permintaan tambahan ke server.
Parsing JSON di platform mobile dilakukan dengan alat bawaan. Android menggunakan pustaka Gson dari Google atau Moshi dari Square, iOS menggunakan protokol Codable dengan JSONDecoder. Setiap platform menyediakan alat yang nyaman untuk mengonversi JSON ke objek native dan sebaliknya.
Di Android, pendekatan dengan Gson atau Moshi populer. Cukup mendefinisikan data class dengan anotasi @SerializedName dan memanggil fromJson untuk deserialisasi. Pustaka secara otomatis mencocokkan nama bidang di JSON dengan bidang kelas.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
Di iOS digunakan protokol bawaan Codable dengan JSONDecoder. Struktur data dideklarasikan sebagai struct dengan protokol Codable, setelah itu JSON diparsing dengan satu baris. JSONEncoder melakukan serialisasi terbalik — mengonversi objek menjadi JSON untuk dikirim ke server.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON dan XML — dua format utama untuk mentransmisikan data terstruktur. JSON unggul dalam kesederhanaan dan kinerja, XML dalam ketelitian dan validasi. Pilihan di antara keduanya tergantung pada kebutuhan proyek: untuk REST API lebih sering dipilih JSON, untuk dokumen kompleks dengan skema — XML.
XML memerlukan tag penutup untuk setiap elemen, yang meningkatkan ukuran data 2-3 kali lipat dibandingkan JSON. Pada saat yang sama, XML mendukung ruang nama, skema XSD, atribut, dan transformasi XSLT, yang membuatnya lebih kuat untuk tugas alur dokumen dan integrasi sistem perusahaan.
| Karakteristik | JSON | XML |
|---|---|---|
| Sintaks | Minimalis, kunci-nilai | Berbasis tag, tag pembuka dan penutup |
| Ukuran data | Ringkas | 2-3 kali lebih besar dari JSON |
| Tipe data | Enam tipe dasar | Hanya teks, tipe melalui skema |
| Validasi | Tidak ada bawaan, melalui JSON Schema | XSD — ketat dan matang |
| Ruang nama | Tidak | Dukungan penuh namespace |
| Kecepatan parsing | Tinggi | Lebih rendah karena kompleksitas |
Contoh mendemonstrasikan operasi tipikal dengan JSON dalam pengembangan mobile: parsing respons API, membuat JSON untuk dikirim, dan memproses struktur bersarang. Pemahaman pola ini penting bagi setiap pengembang aplikasi mobile.
Di JavaScript, JSON.stringify mengonversi objek menjadi string JSON. Argumen kedua dapat berupa array kunci untuk serialisasi selektif atau fungsi pengganti. Argumen ketiga menentukan indentasi untuk pemformatan.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
Di Kotlin dengan pustaka Moshi, objek JSON bersarang diproses melalui data class bersarang. Anotasi @Json menunjukkan nama bidang di JSON jika berbeda dari nama properti kelas. Array direpresentasikan sebagai List dengan tipe elemen.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema — adalah bahasa untuk mendeskripsikan struktur dokumen JSON, analog dengan XSD untuk XML. Dengan JSON Schema, Anda dapat menetapkan bidang wajib, tipe data, rentang nilai, pola string, dan struktur bersarang. Validasi berdasarkan skema mendeteksi kesalahan data sebelum diproses di aplikasi.
JSON Schema banyak digunakan di OpenAPI (Swagger) untuk mendokumentasikan REST API, dalam formulir validasi input, dan dalam pengujian. File skema itu sendiri adalah dokumen JSON, memungkinkan penggunaan parser JSON standar untuk membacanya. Ada validator online dan pustaka untuk semua bahasa pemrograman populer.
Dalam pengembangan mobile, JSON Schema digunakan untuk memvalidasi respons server pada tahap pengujian dan untuk memeriksa file konfigurasi. Pustaka seperti network-validator di Android dan json-schema-validator memungkinkan penyematan validasi langsung ke dalam proses pengembangan, mencegah kesalahan pada tahap awal.
Pertanyaan yang sering diajukan
JSON mendukung enam tipe: string (dalam tanda petik ganda), angka (bulat dan floating-point), boolean (true/false), null, objek (pasangan kunci-nilai dalam {}) dan array (daftar nilai dalam []). Ini cukup untuk semua struktur data dalam aplikasi.
Tidak, standar JSON tidak mendukung komentar. Jika Anda memerlukan komentar, gunakan JSON5 (JSON yang diperluas) atau tambahkan bidang dengan deskripsi, misalnya “_comment”: “penjelasan”. Beberapa alat, seperti VS Code, mendukung komentar di file JSON konfigurasi, tetapi ini adalah ekstensi non-standar.
JSONB — adalah format penyimpanan biner JSON di PostgreSQL. Tidak seperti JSON teks, JSONB diproses lebih cepat, mendukung pengindeksan (indeks GIN) dan menjamin keunikan kunci. Pada saat yang sama, JSONB memakan lebih banyak ruang disk karena metadata yang ditambahkan.
Gunakan JSONLint (jsonlint.com) untuk pemeriksaan cepat, JSON.parse() bawaan di JavaScript dengan try-catch, atau plugin IDE. Validasi mencakup pemeriksaan kebenaran tanda petik, penutupan kurung, dan kesesuaian tipe. Untuk skema kompleks, gunakan JSON Schema Validator.
Tidak ada batasan dalam spesifikasi JSON. Dalam praktiknya, ukuran dibatasi oleh memori perangkat dan kemampuan parser. Untuk aplikasi mobile, disarankan tidak melebihi 1-2 MB per respons, dan untuk data besar menggunakan paginasi atau transmisi streaming.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga