JSON menggunakan sekumpulan sekuens escape tertentu untuk menyertakan karakter khusus di dalam string. Jika string Anda berisi tanda kutip ganda, backslash, atau karakter kontrol, Anda harus melakukan escape agar JSON tersebut valid. Memahami escape pada JSON sangat penting untuk menghasilkan output JSON yang benar dan men-debug payload JSON yang rusak.
Sekuens Escape JSON
| Karakter | Sekuens Escape | Deskripsi |
|---|---|---|
" |
\" |
Tanda kutip ganda |
\ |
\\ |
Backslash |
/ |
\/ |
Garis miring |
\b |
\\b |
Backspace |
\f |
\\f |
Form feed |
\n |
\\n |
Baris baru |
\r |
\\r |
Carriage return |
\t |
\\t |
Tab |
\uXXXX |
\\uXXXX |
Karakter Unicode berdasarkan kode hex |
Kapan Escape Diperlukan
Jika Anda menyematkan string yang dihasilkan pengguna ke dalam payload JSON, Anda harus melakukan escape. Perhatikan objek JSON dengan kolom name yang berisi tanda kutip ganda:
{"name": "John "The Man" Doe"}
JSON ini tidak valid karena tanda kutip ganda di dalam nilai mengakhiri string lebih awal. Output yang benar adalah:
{"name": "John \"The Man\" Doe"}
Metode Khusus Setiap Bahasa
JavaScript
JavaScript menyediakan JSON.stringify() yang secara otomatis melakukan escape pada string.
const user = { name: 'John "The Man" Doe' };
const json = JSON.stringify(user);
console.log(json);
// Hasil: {"name":"John \"The Man\" Doe"}
// Escape manual (jarang diperlukan)
function escapeJson(str) {
return str
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/\t/g, '\\t')
.replace(/\f/g, '\\f');
}
// Unescape
function unescapeJson(str) {
return JSON.parse(`"${str}"`);
}
PHP
// Otomatis melalui json_encode
$data = ['name' => 'John "The Man" Doe'];
echo json_encode($data);
// Hasil: {"name":"John \"The Man\" Doe"}
// Escape manual
$escaped = addslashes('John "The Man" Doe');
echo $escaped;
// Hasil: John \"The Man\" Doe
// Flag JSON_UNESCAPED_UNICODE mempertahankan Unicode
echo json_encode(['emoji' => '😀'], JSON_UNESCAPED_UNICODE);
// Hasil: {"emoji":"😀"}
Python
import json
# Otomatis melalui json.dumps
data = {"name": 'John "The Man" Doe'}
print(json.dumps(data))
# Hasil: {"name": "John \"The Man\" Doe"}
# Pretty print dengan escape
print(json.dumps(data, indent=2))
# Flag ensure_ascii melakukan escape pada Unicode
print(json.dumps({"emoji": "😀"}, ensure_ascii=True))
# Hasil: {"emoji": "\ud83d\ude00"}
Ruby
require 'json'
data = { name: 'John "The Man" Doe' }
puts JSON.generate(data)
# Hasil: {"name":"John \"The Man\" Doe"}
# Atau dengan format pretty
puts JSON.pretty_generate(data)
Kesalahan Umum
Escape ganda terjadi ketika Anda melakukan escape pada string yang sudah di-escape. Sekuens \\" menjadi \\\\\\" jika di-escape sekali lagi, dan JSON menjadi rusak.
Escape Unicode yang hilang untuk karakter non-ASCII. Meskipun JSON mendukung Unicode secara langsung di lingkungan UTF-8, sebagian parser lama mengharapkan sekuens \uXXXX. Flag ensure_ascii di Python mengontrol perilaku ini.
Tidak melakukan escape pada karakter kontrol. Karakter baris baru mentah di dalam string JSON tidak valid. Selalu gunakan \n sebagai gantinya.
Alat Online
Alat JSON Escape & Unescape di Help2Code menyediakan escape dan unescape secara instan. Tempelkan string Anda, pilih arahnya, lalu salin hasilnya. Ini adalah cara tercepat untuk melakukan escape pada string agar bisa disertakan dalam payload JSON.
Escape dalam Konteks Bersarang
Ketika JSON disematkan ke dalam format lain seperti HTML atau URL, Anda memerlukan beberapa lapisan escape. String JSON di dalam nilai atribut HTML harus di-escape sebagai JSON terlebih dahulu, lalu di-encode sebagai entitas HTML:
<div data-config='{"name":"John "The Man" Doe"}'>
JSON menggunakan \" untuk tanda kutip, lalu atribut HTML menggunakan " untuk string JSON tersebut. Kedua lapisan sama-sama diperlukan agar output yang dihasilkan valid.
Kesimpulan
Escape JSON yang tepat memastikan data Anda terserialisasi dengan benar dan parser JSON Anda tidak tersendat oleh karakter khusus. Gunakan fungsi serialisasi JSON bawaan bahasa pemrograman Anda alih-alih escape manual untuk kode produksi. Untuk kebutuhan escape yang cepat, alat online JSON Escape & Unescape adalah pilihan tercepat.