JSON Formatter

Format JSON kami adalah alat online yang cepat dan gratis bagi para pengembang untuk memformat, memvalidasi, dan memperkecil data JSON. Tempel JSON Anda dan langsung lihat hasil cetak rapinya dengan penyorotan sintaks. Validator menunjukkan lokasi error yang tepat dengan nomor baris, sehingga memudahkan perbaikan JSON yang rusak. Mendukung indentasi 2 spasi, 4 spasi, dan tab, ditambah pengecilan satu klik untuk penggunaan produksi. Semua pemrosesan terjadi di browser Anda — JSON Anda, termasuk payload sensitif apa pun, tidak pernah meninggalkan halaman.

star 4.9
auto_awesome AI
New

JSON Formatter calculator

info Paste JSON to format
0 lines 0 B 0 keys depth 0

lightbulb Tips

  • •JSON keys must use double quotes
  • •Trailing commas are not valid JSON
  • •Use 2-space indent for most projects
  • •Minify JSON for API payloads

Cara Memformat, Memvalidasi, dan Memperkecil JSON dalam 3 Langkah

content_paste

Tempel JSON

Tempel JSON mentah atau acak Anda ke editor masukan. Mendukung teks JSON yang valid (atau tidak valid).

code

Format atau Minimalkan

Klik Format untuk mempercantik cetakan dengan indentasi pilihan Anda, atau Minimalkan untuk mengompres. Kesalahan disorot secara otomatis.

content_copy

Salin Hasil

Klik tombol Salin untuk menyalin JSON yang telah diformat ke papan klip Anda. Gunakan dalam kode Anda, permintaan API, atau file konfigurasi.

bug_report

Perbaiki Kesalahan

Jika JSON tidak valid, pesan kesalahan akan menampilkan baris dan posisi yang tepat. Perbaiki masalah tersebut dan format ulang.

The Formula

Pemformatan JSON bekerja dengan mengurai string JSON mentah menjadi objek JavaScript (yang memvalidasinya), lalu menyerialisasikannya kembali dengan indentasi yang tepat. Jika penguraian gagal, pesan kesalahan akan menyertakan posisi kesalahan sintaksis. Minifikasi menghapus semua spasi kosong dengan tidak menggunakan indentasi.

JSON.parse(input) → JSON.stringify(parsed, null, indent)

lightbulb Variables Explained

  • input String JSON mentah yang akan diformat
  • JSON.parse() Memvalidasi dan mengurai JSON — memunculkan kesalahan jika tidak valid
  • JSON.stringify() Mengubah kembali objek yang diurai menjadi string yang diformat
  • indent Jumlah spasi (2 atau 4) atau karakter tab untuk indentasi

tips_and_updates Pro Tips

1

Gunakan indentasi 2 spasi untuk file yang padat, 4 spasi untuk keterbacaan

2

Perkecil JSON sebelum mengirimkannya dalam permintaan API untuk mengurangi ukuran payload

3

Error umum: koma di akhir, tanda kutip tunggal, dan kunci tanpa tanda kutip bukanlah JSON yang valid

4

Gunakan Ctrl+A untuk memilih semua, lalu tempel — pemformat menangani spasi apa pun

5

Kunci JSON harus selalu berupa string dengan tanda kutip ganda — {key: value} bukan JSON yang valid

6

Array dan objek boleh kosong: [] dan {} adalah JSON yang valid

7

null, true, false adalah nilai JSON yang valid — tetapi undefined dan NaN tidak

8

RFC 8259 mengharuskan pengodean UTF-8 — escape karakter non-ASCII dengan \uXXXX jika transport Anda hanya mendukung ASCII

9

Urutkan kunci objek secara alfabet sebelum membandingkan dua file JSON untuk set perubahan yang lebih bersih

10

Untuk file yang sangat besar, lebih disukai menggunakan parser streaming (jq, ijson, Jackson Streaming) daripada JSON.parse

Format, validasi, dan minimalkan JSON secara instan dengan penyorotan sintaksis, nomor baris kesalahan, dan salin satu klik. Semua pemrosesan berjalan di peramban Anda — tempel respons API, payload JWT, atau konfigurasi sensitif tanpa pernah meninggalkan perangkat Anda. Di bawah ini: cara kerja pemformat, spesifikasi JSON yang divalidasi (RFC 8259 / ECMA-404), serta ulasan mendalam tentang Skema JSON, JSONPath, JSON Lines, JSON5, and celah keamanan yang harus diketahui setiap pengembang.

kalkulator waktu

Tempel JSON yang ringkas, diminifikasi, atau berantakan dan dapatkan hasil dengan indentasi sempurna secara instan. Pemformat mengurai JSON Anda dengan JSON.parse bawaan peramban (menurut ECMA-404), mempertahankan karakter Unicode, dan menerbitkannya kembali dengan indentasi pilihan Anda:

  • 2 spasi (bawaan npm dan prettier)
  • 4 spasi
  • tab

Objek dan array bertingkat diindentasi secara benar di setiap kedalaman. Kunci, string, angka, boolean, dan null mendapatkan warna penyorotan sintaksis yang berbeda sehingga sekilas Anda dapat melihat strukturnya.

Label 'beautifier' dapat ditukar dengan 'formatter' atau 'pretty printer' — semuanya mendeskripsikan operasi yang sama: menghasilkan JSON yang mudah dibaca manusia dari input yang ringkas.

Cara Memvalidasi JSON: Kepatuhan RFC 8259 dan Kesalahan Umum

Validasi berjalan saat Anda mengetik. Jika JSON Anda gagal diurai, pemformat akan menampilkan baris, kolom, dan apa yang diharapkan oleh pengurai secara tepat.

Validasi sangat ketat sesuai RFC 8259 (Standar Internet IETF) dan ECMA-404 — tanpa komentar, tanpa koma di akhir, tanpa tanda kutip tunggal, tanpa kunci tanpa tanda kutip, tanpa NaN, tanpa Infinity, tanpa undefined. Nilai tingkat atas dapat berupa nilai JSON apa pun (objek, array, string, angka, true, false, null).

Untuk input yang dikodekan UTF-8, pemformat menerima set karakter Unicode lengkap; lingkungan khusus ASCII harus menggunakan escape \uXXXX.

Kesalahan umum dan perbaikannya:

  • koma di akhir setelah elemen array/objek terakhir (hapus koma tersebut)
  • tanda kutip tunggal di sekitar kunci atau string (ganti dengan tanda kutip ganda)
  • tanda kurung tutup atau siku yang hilang (kolom kesalahan mengarah ke dekat bagian yang terpotong)
  • karakter kontrol yang tidak di-escape dalam string (escape dengan \n, \t, \\)

Peminim JSON: Kurangi Ukuran Payload untuk API dan Produksi

Minifikasi menghilangkan semua spasi putih yang tidak penting — spasi antar token, indentasi, dan baris baru — menyisakan representasi yang paling ringkas. Penghematan tipikal adalah 20–60% tergantung pada seberapa banyak JSON sumber Anda diindentasi.

Gunakan JSON yang diminifikasi untuk:

  • Respons API REST/GraphQL
  • Pesan WebSocket
  • Payload JWT
  • Blob konfigurasi SaaS
  • Atribut data tersemat dalam HTML

Gunakan JSON yang diformat (pretty-printed) untuk:

  • File konfigurasi yang dikontrol sumbernya
  • Fixture dan snapshot dalam pengujian
  • Dokumen yang diedit oleh manusia

JSON yang diminifikasi tetap merupakan JSON standar 100% — pengurai yang kompatibel mana pun akan menerimanya. Peminim di sini mempertahankan data secara persis: tidak ada pengurutan ulang kunci, tidak ada pemaksaan nilai, tidak ada kehilangan presisi pada angka dalam rentang ganda IEEE 754.

Validasi Skema JSON: Validasi Tipe, Kolom Wajib & Enum

Validasi sintaksis JSON murni hanya memeriksa apakah dokumen berhasil diurai. Skema JSON memvalidasi bentuk dokumen — bahwa 'email' adalah string, 'age' adalah bilangan bulat 0–150, 'role' adalah salah satu dari ['admin', 'user', 'guest']. Skema itu sendiri adalah dokumen JSON yang mendeskripsikan batasan; instans divalidasi terhadapnya.

Kata kunci umum: type, required, properties, items, enum, pattern (regex), minimum/maximum, minLength/maxLength, format (email, date-time, uri).

Implementasi referensi:

  • Ajv (JavaScript, tercepat)
  • jsonschema (Python)
  • networknt/json-schema-validator (Java)
  • justinrainbow/json-schema (PHP)

Validasi skema mendeteksi sejumlah besar bug di batas API: kolom wajib yang hilang, tipe yang salah, nilai di luar rentang, tanggal yang salah format. Spesifikasi OpenAPI 3.x menggunakan Skema JSON untuk validasi permintaan/respons.

Tutorial JSONPath: Kueri dan Ekstrak Nilai dari JSON Bertingkat

JSONPath bagi JSON sama seperti XPath bagi XML — bahasa kueri untuk menavigasi dan mengekstrak dari JSON bertingkat.

Sintaksis:

  • $ (akar)
  • . (turunan)
  • .. (penurunan rekursif)
  • [n] (indeks array)
  • [start:end] (irisan)
  • [?(expression)] (filter)
  • * (wildcard)

Contoh pada JSON toko tipikal:

  • $.store.book[0].title mengambil judul buku pertama
  • $..author mengembalikan setiap penulis di seluruh dokumen
  • $.store.book[?(@.price < 10)] menyaring buku yang lebih murah dari 10
  • $.store..price[*] meratakan semua harga

Alat: jq (sintaksis sedikit berbeda tetapi kemampuannya sama, dominan dalam skrip shell), skrip pengujian Postman, JMESPath (--query AWS CLI), dan pustaka JSONPath di setiap bahasa utama.

JSON Lines (JSONL): JSON Berbasis Baris Baru untuk Log dan Stream

JSON Lines (jsonlines.org), yang juga dikenal sebagai NDJSON atau LDJSON, adalah format di mana setiap baris adalah nilai JSON yang lengkap. Berkas secara keseluruhan bukanlah JSON yang valid — tetapi setiap barisnya secara individual valid.

Sangat sering digunakan untuk streaming log (Loki, Splunk HEC, Vector), alur ETL, data pelatihan machine learning (berkas fine-tuning OpenAI), dan segala aliran data append-only.

Kelebihan:

  • ramah streaming (mengurai satu catatan dalam satu waktu, memori konstan)
  • append-only (cukup tulis baris berikutnya)
  • dapat dicari dengan grep dan awk menggunakan perangkat standar Unix

Ekstensi berkas: .jsonl, .ndjson. Konversikan dari array JSON dengan `jq -c '.[]'`; konversikan ke array JSON dengan `jq -s` (slurp). BigQuery, Athena, Snowflake, dan sebagian besar gudang data modern menerima NDJSON secara native.

JSON5 vs JSON: Kapan Harus Menggunakan Setiap Format dengan Aman

JSON5 (json5.org) memperluas JSON dengan kemudahan bagi pengembang:

  • komentar (// dan /* */)
  • koma di bagian akhir
  • string dengan tanda kutip tunggal
  • kunci tanpa tanda kutip
  • string multi-baris (dengan kelanjutan garis miring terbalik)
  • angka heksadesimal
  • nilai khusus IEEE 754 (NaN, Infinity)

Format ini TIDAK kompatibel dengan JSON.parse — Anda memerlukan pengurai JSON5 (paket npm json5, PyJson5).

Gunakan JSON5 untuk berkas konfigurasi yang diedit manusia di mana komentar sangat berguna: babel.config.json5, beberapa konfigurasi alat bangun, .vscode/settings.json (yang menggunakan JSONC, dialek JSON-dengan-komentar yang serupa).

Tetap gunakan JSON standar untuk: API HTTP, pertukaran data, format penyimpanan, dan apa pun yang dihasilkan oleh mesin. Mencampur keduanya akan membingungkan alat — pilih satu per berkas dan patuhi itu.

Kesalahan Umum JSON: Koma di Akhir, Tanda Kutip Tunggal & Pengodean

Kesalahan penguraian JSON yang paling sering terjadi dan perbaikannya:

  • (1) Koma di akhir setelah elemen terakhir — `{"a":1,}` atau `[1,2,3,]` — hapus koma yang menggantung.
  • (2) Tanda kutip tunggal pada kunci atau nilai string — `{'name':'Alice'}` — harus berupa tanda kutip ganda.
  • (3) Kunci tanpa tanda kutip — `{name:"Alice"}` — beri tanda kutip.
  • (4) Komentar menggunakan // atau /* */ — JSON ketat tidak mengizinkannya; hapus atau beralihlah ke JSON5/JSONC.
  • (5) Nilai JavaScript yang tidak ada di JSON — undefined, NaN, Infinity, fungsi — ganti dengan null atau hapus.
  • (6) Masukan terpotong — pengurai biasanya menunjuk ke baris tempat konten yang diharapkan habis.
  • (7) BOM (byte-order mark) di awal berkas UTF-8 — sebagian besar pengurai menolaknya; hapus dengan `sed -i '1s/^\xEF\xBB\xBF//'`.
  • (8) Campuran tab dan spasi tidak merusak penguraian tetapi merusak diff — pilih satu gaya inden.

Keamanan JSON: Pencemaran Prototaip, Eval, dan Penguraian Aman

Tiga kategori kerentanan terkait JSON yang harus dipahami oleh setiap pengembang.

  • (1) Pencemaran prototaip (prototype pollution): menggabungkan JSON yang tidak tepercaya ke dalam objek yang sudah ada dapat mencemari Object.prototype jika masukan berisi kunci __proto__, constructor, atau prototype — memengaruhi setiap objek di runtime. Gunakan Object.create(null), structuredClone, atau pustaka seperti defaultsDeep milik lodash yang secara eksplisit memblokir kunci-kunci ini.
  • (2) Jangan pernah menggunakan eval() untuk mengurai JSON — eval mengeksekusi JavaScript apa pun, sementara JSON.parse berada dalam sandbox. Mitos 'eval lebih cepat' telah dibantah bertahun-tahun lalu.
  • (3) Kendala re-serialisasi: JSON.stringify secara diam-diam menghilangkan fungsi, undefined, dan nilai Symbol dari objek (dikonversi ke null dalam array). Metode ini juga akan memunculkan galat pada referensi melingkar dan BigInt secara default.

Validasi JSON yang tidak tepercaya dengan Skema JSON sebelum memprosesnya, tetapkan ukuran tubuh maks pada API Anda, dan gunakan pemeriksaan Content-Type untuk menolak masukan non-JSON sejak dini. Lembar Contek Keamanan REST OWASP mencakup gambaran lengkapnya.

Mengonversi JSON ke YAML, CSV, dan XML: Panduan Konversi Format

JSON ↔ YAML adalah konversi yang paling nirhilang — keduanya mendukung objek/array bersarang. Waspadai pemaksaan tipe otomatis YAML (yes/no/on/off menjadi boolean, angka tanpa tanda kutip tetap berupa angka, string literal 'null' menjadi null) — beri tanda kutip pada nilai yang ambigu. Alat: js-yaml (npm), PyYAML, yq.

JSON → CSV memerlukan perataan struktur bersarang — bekerja paling baik untuk array objek datar. Pilih strategi untuk nilai bersarang: stringify (tulis sebagai JSON dalam sel) atau kolom notasi titik (`address.city`, `address.zip`). Alat: in2csv dari csvkit, pd.json_normalize pandas, json2csv (npm).

JSON → XML sangat mudah untuk struktur pohon tetapi menghilangkan perbedaan antara array dan objek — saudara kandung XML bisa berupa salah satunya. Waspadai nama elemen XML yang tidak valid (tidak boleh dimulai dengan digit, tidak boleh berisi spasi). Alat: xml-js, xmltodict (Python).

Untuk semua konversi, tentukan terlebih dahulu apakah Anda ingin mempertahankan informasi tipe atau meratakan semuanya menjadi string.

Bekerja dengan Berkas JSON Besar: Pengurai Streaming & Tips Memori

JSON.parse memuat seluruh dokumen ke dalam memori — bagus untuk respons API tipikal, tetapi bermasalah untuk berkas yang ukurannya lebih dari beberapa ratus MB. Pengurai streaming memproses satu token (atau satu catatan) dalam satu waktu, mempertahankan memori yang konstan terlepas dari ukuran berkas.

  • JavaScript: stream-json atau oboe.js untuk penguraian gaya SAX.
  • Python: ijson untuk penguraian inkremental, atau konversikan ke JSON Lines terlebih dahulu dan baca baris demi baris.
  • Java: API Streaming Jackson (JsonParser).
  • Shell: jq memproses streaming JSON melalui --stream.

Untuk berkas yang dihasilkan sebagai array catatan JSON, pertimbangkan untuk beralih agar produsen mengeluarkan JSON Lines — setiap konsumen hilir akan diuntungkan. Ketika Anda harus menangani array JSON besar di memori, lebih baik lakukan iterasi dan buang catatan daripada membangun struktur data paralel. Perhatikan ukuran heap, tetapkan --max-old-space-size di Node, dan buat profil sebelum melakukan pengoptimalan.

Lembar Contek Pemformat JSON: Inden, Urutkan Kunci, Diff & Escape

Referensi cepat untuk tugas JSON sehari-hari.

  • Inden: prettier dan npm secara default menggunakan 2 spasi; pilih 4 untuk basis kode perusahaan yang sudah menggunakan inden 4 spasi di berbagai bahasa; tab valid tetapi jarang digunakan dalam JSON.
  • Urutkan kunci (untuk diff yang lebih bersih): JSON.stringify(obj, Object.keys(obj).sort(), 2) untuk objek dangkal; jq --sort-keys untuk rekursi mendalam; Python json.dumps(obj, sort_keys=True).
  • Bandingkan dua berkas JSON (diff): jq --sort-keys pada kedua berkas, lalu jalankan diff biasa; atau gunakan json-diff (npm), DeepDiff (Python), perbandingan sadar-JSON bawaan VS Code.
  • Urutan escape dalam string: \\" (tanda kutip ganda), \\\\ (garis miring terbalik), \\/ (garis miring maju, opsional), \\b (backspace), \\f (form feed), \\n (baris baru), \\r (carriage return), \\t (tab), \\uXXXX (titik kode Unicode).
  • Angka: JSON mengizinkan desimal dan eksponen (1.5e3) tetapi tidak boleh ada nol di depan (0123 tidak valid) dan tidak boleh ada titik desimal di akhir (1. tidak valid).
  • String harus diapit tanda kutip ganda — tanda kutip tunggal hanya untuk JSON5.
code

Embed this JSON Formatter on your site

Free for any site. Copy the snippet below and paste into your HTML — no attribution required beyond the built-in credit link.

<iframe src="https://calculators.im/embed/json-formatter" width="100%" height="720" style="border:0;max-width:100%;" loading="lazy" title="JSON Formatter by Calculators.im"></iframe>
<p style="font-size:12px;text-align:center;color:#64748b;margin-top:6px;">Powered by <a href="https://calculators.im/json-formatter?utm_source=embed&utm_medium=snippet&utm_campaign=json-formatter">JSON Formatter</a> by Calculators.im</p>
open_in_new Preview embed Auto-resizing iframe. Mobile responsive. Works with WordPress, Ghost, Webflow, and plain HTML.

Frequently Asked Questions

sell

Tags