Data JSON (.json)
RFC StandarJavaScript Object Notation (JSON) adalah format teks yang ringan dan mudah dibaca manusia untuk pertukaran data, sepenuhnya independen dari bahasa pemrograman, dan digunakan secara universal untuk API web.
Konversi JSON ke HTML
Konverter JSON ke HTML gratis yang berjalan di peramban. Konversikan berkas secara instan di perangkat Anda.
Kompres JSON Secara Daring
Privat - file tidak pernah meninggalkan perangkat Anda
Pemeriksaan & Metadata
Sistem operasi dan penganalisis file mengenali file JSON dengan memeriksa urutan byte biner di bagian awal:
Tanda Tangan Header per Byte (Byte Penanda)
Sistem operasi dan penganalisis file mengenali file JSON dengan memeriksa urutan byte biner di bagian awal:
TANDA TANGAN HEX (OFFSET 0):
7B or 5BREPRESENTASI ASCII: { or [
Standardisasi: RFC 8259 / ECMA-404 / ISO/IEC 21778
Spesifikasi Teknis
| Arsitektur Kontainer | Format pertukaran data yang ringan, berbasis teks, dan independen dari bahasa pemrograman |
| Kompresi | Kompresi teks Gzip / Brotli / Zstandard (biasanya mencapai rasio 80%-90%) |
| Urutan Byte | Unicode yang dikodekan dalam UTF-8 (disarankan tanpa Byte Order Mark / BOM) |
| Ruang Warna | Tidak berlaku |
| Saluran & Struktur | Enam tipe data dasar: objek, susunan (array), string, angka (number), boolean, null |
| Dimensi Maksimum | Tanpa batas; hanya dibatasi oleh memori parser dan panjang string maksimum |
| Transparansi | Tidak berlaku |
| Streaming & Progresif | NDJSON (Newline Delimited JSON) / JSON Lines memungkinkan pemrosesan aliran progresif |
Perbandingan Teknis JSON dengan Pesaing
| Atribut Teknis | JSON (Saat Ini) | YAML | XML | Protocol Buffers |
|---|---|---|---|---|
| Kompleksitas Sintaksis | Minimal (6 tipe, sintaksis ketat) | Tinggi (berbasis indentasi, spesifikasi kompleks) | Tinggi (tag penutup yang bertele-tele, namespace) | Format serialisasi biner yang ditentukan oleh skema |
| Performa Penguraian | Sangat cepat di semua bahasa modern | Lambat (penguraian indentasi yang kompleks) | Sedang hingga lambat (konstruksi DOM yang berat) | Sangat cepat (deserialisasi biner tanpa penyalinan / zero-copy) |
| Dukungan Komentar | Tidak ada (sengaja dikecualikan untuk mencegah penumpukan metadata) | Ya (komentar #) | Ya (komentar <!-- -->) | Ya di dalam file .proto |
| Ukuran Payload Jaringan | Teks ringkas (rasio gzip sangat tinggi) | Teks ringkas | Teks panjang lebar (pengulangan tag yang berlebihan) | Biner sangat ringkas |
Pola Kerusakan Umum dan Panduan Pemulihan Hex
SyntaxError: token , tidak terduga pada posisi X dalam JSON.
Penyebab Utama: Koma tambahan (trailing comma) setelah item terakhir dalam susunan atau objek, yang secara ketat dilarang dalam JSON RFC 8259.
Pemulihan: Hapus koma tambahan dari kunci objek dan entri susunan sebelum diteruskan ke JSON.parse().
SyntaxError: token ' tidak terduga dalam JSON.
Penyebab Utama: String atau kunci diapit dalam tanda kutip tunggal ('') alih-alih tanda kutip ganda ("").
Pemulihan: Ganti semua string dan kunci bertanda kutip tunggal dengan string bertanda kutip ganda standar.
Analisis Keamanan & Vektor Serangan Parser
JSON hanya berupa teks dan aman dari eksekusi kode langsung, tetapi penguraian JSON yang tidak tepercaya dapat menyebabkan pencemaran prototipe (Prototype Pollution), ReDoS, atau kehabisan memori.
Vektor Serangan yang Diketahui
- Pencemaran prototipe (Prototype Pollution): kunci bernama '__proto__' atau 'constructor' mengubah Object.prototype dalam aplikasi JavaScript.
- Penolakan layanan (DoS) luapan tumpukan (stack overflow) melalui struktur JSON yang bersarang sangat dalam (misalnya 10.000 tanda kurung buka).
- Kehilangan presisi numerik: Angka JavaScript yang lebih besar dari 2^53 - 1 (9.007.199.254.740.991) secara senyap kehilangan presisinya.
Praktik Terbaik Defensif: Jangan pernah mengevaluasi JSON dengan eval(). Gunakan JSON.parse() dan sanitasi properti '__proto__' dalam fungsi penggabungan objek rekursif.
Asal-Usul & Tonggak Sejarah
Keunggulan & Kelebihan Utama
- Struktur teks yang mudah dibaca manusia, mendeskripsikan diri sendiri (self-describing), dan ringkas.
- Dukungan penguraian (parsing) bawaan yang tertanam dalam mesin JavaScript (JSON.parse) dan setiap bahasa pemrograman utama.
- Spesifikasi yang ketat mencegah eksekusi kode arbitrer.
Keterbatasan Teknis & Kekurangan
- Tidak ada dukungan untuk komentar, koma di akhir (trailing comma), atau referensi objek melingkar (circular reference).
- Tidak ada tipe biner asli (data biner harus dikodekan dengan base64, yang memperbesar ukuran hingga 33%).
- Serialisasi yang kurang efisien dibandingkan format biner seperti Protocol Buffers atau MessagePack.
Fakta Teknis Menarik
- Douglas Crockford menambahkan klausul lisensi perangkat lunak 'Perangkat Lunak ini harus digunakan untuk Kebaikan, bukan Keburukan' pada alat JSMin JSON asli.
- JSON adalah subset ketat dari sintaksis JavaScript, tetapi hingga ES2019, karakter U+2028 dan U+2029 mentah yang tidak di-escape valid dalam JSON tetapi tidak valid dalam string JavaScript.
- Douglas Crockford menemukan bahwa browser web awal dapat mengevaluasi JSON secara langsung menjadi objek menggunakan eval() bawaan JavaScript sebelum API JSON.parse() khusus distandarisasi dalam ECMAScript 5.
Pertanyaan Teknis yang Sering Diajukan
Mengapa JSON tidak mengizinkan komentar?
Tata bahasa JSON tidak mengizinkan komentar. Implementasi dapat berbeda dalam menangani ekstensi dan data khusus aplikasi, sehingga format saja tidak menjamin interoperabilitas.
Bagaimana cara menyimpan integer 64-bit dalam JSON tanpa kehilangan presisi?
Tipe Number bawaan JavaScript adalah float presisi ganda IEEE 754, yang hanya mendukung integer hingga 2^53 - 1 secara presisi. Integer 64-bit (seperti ID database atau stempel waktu) harus diserialisasikan sebagai string (misalnya '1234567890123456789') dalam JSON.
Apa perbedaan antara JSON dan NDJSON / JSON Lines?
JSON standar membungkus seluruh payload dalam satu objek atau susunan root, yang mengharuskan parser memuat seluruh teks sebelum mengevaluasinya. NDJSON (Newline Delimited JSON) memisahkan catatan JSON valid individual dengan karakter baris baru (\n), memungkinkan streaming baris-demi-baris yang efisien memori dari dataset multi-gigabyte yang masif.
Pasangan Konversi JSON Terkait
Mengonversi data JSON ke dalam sumber HTML mengubah pasangan kunci-nilai terstruktur mentah menjadi dokumen web yang mudah dibaca manusia dan siap dirender di peramban.
Mengonversi sumber HTML menjadi data JSON mengubah dokumen web yang mudah dibaca manusia menjadi pasangan kunci-nilai terstruktur untuk pemrosesan programatis dan penggunaan oleh API.
Mengonversi skrip teks SQL Dump menjadi ekspor data JSON mengubah tabel basis data relasional yang kaku menjadi objek bersarang yang fleksibel untuk aplikasi web modern.
Mengubah file teks JSON yang tidak terstruktur menjadi basis data relasional SQLite yang terstruktur memungkinkan pengindeksan dan kueri cepat atas catatan data dalam jumlah besar.
Mengonversi file Adobe Swatch Exchange ke struktur JSON Warna mengubah palet desain biner menjadi objek teks yang dapat dibaca untuk aplikasi web modern.
Mengonversi data teks Color JSON menjadi sampel biner Adobe ASE menjembatani token desain berbasis web dengan aplikasi tata letak desktop profesional.
Mengonversi file teks GIMP Palette menjadi struktur Color JSON memungkinkan aplikasi web membaca sampel warna secara langsung tanpa skrip penguraian yang rumit.
Mengonversi file Color JSON terstruktur menjadi variabel CSS mengubah objek data mentah menjadi properti gaya bawaan untuk situs web.