Cara Format dan Validasi JSON Online
JSON yang diminifikasi tidak bisa dibaca. Blob satu baris dari respons API atau file config mustahil di-debug tanpa memformatnya dulu. Berikut cara memformat JSON secara instan, memvalidasinya, dan memperbaiki error umum yang membuat parser tersedak.
Apa yang dilakukan pemformatan JSON
Pemformatan (disebut juga pretty-printing) mengubah ini:
{"name":"John Doe","age":30,"address":{"city":"Jakarta","zip":"10001"},"tags":["developer","writer"]}
Menjadi ini:
{
"name": "John Doe",
"age": 30,
"address": {
"city": "Jakarta",
"zip": "10001"
},
"tags": [
"developer",
"writer"
]
}
Data yang sama, whitespace berbeda — JSON tetap valid di kedua bentuk.
Format di browser
Tempel JSON yang diminifikasi ke formatter, klik format, dan dapatkan output yang diindentasi. Sebagian besar formatter juga memvalidasi saat kamu mengetik, menyorot baris persis di mana error sintaks terjadi. Ini jalur tercepat untuk debugging satu kali.
Format di JavaScript
const minified = '{"name":"John Doe","age":30}';
const formatted = JSON.stringify(JSON.parse(minified), null, 2);
console.log(formatted);
JSON.stringify(value, replacer, space) — argumen ketiga adalah indentasi. 2 memberi indentasi 2 spasi; '\t' memberi tab.
Format file JSON di Node.js:
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
fs.writeFileSync('data.json', JSON.stringify(data, null, 2));
Format di Python
import json
minified = '{"name": "John Doe", "age": 30}'
formatted = json.dumps(json.loads(minified), indent=2)
print(formatted)
Format file secara langsung:
import json
with open('data.json', 'r') as f:
data = json.load(f)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
ensure_ascii=False mempertahankan karakter Unicode (é, ñ, 你好, huruf Arab, aksara Jawa) alih-alih mengubahnya menjadi escape \uXXXX.
Command line: jq
jq adalah JSON processor di command line. Format sebuah file:
# Install
brew install jq # macOS
sudo apt install jq # Ubuntu
# Pretty-print
jq . data.json
# Minifikasi
jq -c . data.json
# Format respons API yang di-pipe
curl -s https://api.example.com/data | jq .
One-liner Python (tidak perlu install):
python3 -m json.tool data.json
Error JSON yang umum dan cara memperbaikinya
Trailing comma:
{
"name": "John",
"age": 30, ← error
}
JSON tidak mengizinkan trailing comma. Hapus koma terakhir sebelum } atau ].
Tanda kutip tunggal alih-alih ganda:
{'name': 'John'} ← error
JSON mengharuskan tanda kutip ganda untuk semua string dan key. Ganti ' dengan ".
Key tanpa tanda kutip:
{name: "John"} ← error
Sintaks object literal JavaScript bukan JSON yang valid. Key harus dikutip: {"name": "John"}.
Komentar:
{
// Ini adalah object user
"name": "John"
}
JSON tidak mendukung komentar. Hapus komentar tersebut, atau gunakan format JSONC jika toolmu mendukungnya.
Nilai undefined atau NaN:
{"value": undefined} ← error
{"value": NaN} ← error
undefined, NaN, dan Infinity adalah nilai JavaScript, bukan nilai JSON. Ganti dengan null, 0, atau hapus field-nya.
Karakter khusus yang tidak di-escape dalam string:
{"message": "Dia berkata "halo""} ← error
Tanda kutip ganda di dalam string harus di-escape: {"message": "Dia berkata \"halo\""}. Baris baru dalam string juga perlu di-escape: gunakan \n, bukan baris baru literal.
Validasi secara programatik
function isValidJson(str) {
try {
JSON.parse(str);
return true;
} catch {
return false;
}
}
import json
def is_valid_json(s: str) -> bool:
try:
json.loads(s)
return True
except json.JSONDecodeError:
return False
Untuk penggunaan produksi dengan pesan error yang detail, JSON.parse (JS) dan json.loads (Python) melempar exception dengan posisi error.
Pengurutan key
Key yang diurutkan secara alfabet membuat perbandingan diff jauh lebih bersih di version control:
const sorted = JSON.stringify(data, Object.keys(data).sort(), 2);
json.dumps(data, sort_keys=True, indent=2)
Ringkasan
JSON.stringify(data, null, 2)di JavaScript danjson.dumps(data, indent=2)di Python memformat objek apa pun.jq .adalah formatter command-line tercepat — juga bekerja bagus dengan outputcurl.- Lima error JSON paling umum: trailing comma, tanda kutip tunggal, key tanpa tanda kutip, komentar, dan karakter yang tidak di-escape.
- Gunakan
ensure_ascii=Falsedi Python untuk menjaga Unicode tetap terbaca. - Urutkan key dengan
sort_keys=TrueatauObject.keys().sort()untuk diff yang lebih bersih.