ToolDeck

JSON String Escape

Escape dan unescape karakter khusus JSON dalam string

Coba contoh

Input

Output

Berjalan lokal · Aman untuk menempel rahasia
Hasil akan muncul di sini…

Apa itu JSON String Escaping?

JSON string escaping adalah proses mengonversi karakter khusus di dalam sebuah string menjadi urutan escape yang dapat dibaca oleh JSON parser tanpa merusak struktur dokumen. Spesifikasi JSON (ECMA-404 / RFC 8259) mengharuskan karakter-karakter tertentu di dalam nilai string didahului oleh backslash. Tanpa escaping yang tepat, tanda kutip ganda atau baris baru literal di dalam sebuah string akan mengakhiri string lebih awal dan menghasilkan parse error.

Setiap string JSON dibatasi oleh tanda kutip ganda. Ketika string itu sendiri mengandung tanda kutip ganda, backslash, atau karakter kontrol (U+0000 hingga U+001F), karakter tersebut harus diganti dengan urutan escape-nya. Misalnya, baris baru literal menjadi \n, tab menjadi \t, dan tanda kutip ganda menjadi \". Setiap code point Unicode juga dapat direpresentasikan sebagai \uXXXX, di mana XXXX adalah nilai heksadesimal empat digit.

Unescaping (operasi kebalikannya) mengonversi urutan backslash tersebut kembali menjadi karakter aslinya. Gunakan ini ketika Anda menerima payload JSON di mana nilai string di-escape ganda, atau ketika Anda perlu mengekstrak teks mentah dari entri log JSON untuk ditampilkan di UI atau terminal. Pipeline agregasi log sering menghadapi ini: ketika pesan yang di-encode JSON disimpan sebagai nilai string di dalam dokumen JSON lain, setiap backslash dalam string bagian dalam tiba dengan jumlah ganda.

Mengapa Menggunakan Alat JSON Escape?

Menambah atau menghapus backslash secara manual itu membosankan dan rawan kesalahan, terutama saat menangani teks multi-baris, path file, atau potongan kode yang disematkan. Alat escape khusus menangkap kasus tepi yang terlewatkan saat pengeditan manual.

🔒
Pemrosesan yang mengutamakan privasi
String Anda tidak pernah meninggalkan browser. Semua proses escape dan unescape berjalan secara lokal di JavaScript tanpa panggilan ke server, sehingga data sensitif seperti kunci API atau token tetap berada di mesin Anda.
Konversi instan
Tempel teks apa pun dan dapatkan output JSON yang telah di-escape dengan benar dalam hitungan milidetik. Tidak perlu menunggu permintaan ke server jarak jauh.
🛡️
Tanpa akun atau instalasi
Buka halaman dan langsung mulai escape. Tanpa formulir pendaftaran, tanpa ekstensi browser, tanpa alat CLI yang perlu diinstal. Berfungsi di perangkat apa pun dengan browser modern.
📋
Cakupan karakter lengkap
Menangani semua escape yang diwajibkan JSON: tanda kutip ganda, backslash, karakter kontrol (U+0000 hingga U+001F), dan urutan Unicode termasuk emoji dan karakter CJK.

Kasus Penggunaan JSON String Escape

Pengembangan frontend
Escape konten yang dihasilkan pengguna sebelum menyematkannya dalam payload JSON yang dikirim melalui fetch atau XMLHttpRequest. Mencegah permintaan yang tidak valid ketika pengguna mengetik tanda kutip, baris baru, atau emoji.
Pekerjaan API backend
Buat body respons JSON dalam bahasa yang tidak melakukan auto-escape string (skrip shell, stored procedure SQL, template engine). Tempel string mentah, salin versi yang sudah di-escape.
DevOps dan konfigurasi
Sematkan blok PEM sertifikat multi-baris, kunci SSH, atau skrip shell ke dalam file konfigurasi JSON untuk Terraform, CloudFormation, atau Kubernetes ConfigMap tanpa merusak struktur JSON.
QA dan pengujian
Buat fixture pengujian yang menyertakan karakter tepi: tab, null byte, pasangan surrogate Unicode, dan string yang di-escape secara bertingkat. Verifikasi bahwa parser Anda menanganinya dengan benar.
Rekayasa data
Bersihkan entri log yang di-escape ganda dari Elasticsearch, CloudWatch, atau Datadog. Unescape string untuk memulihkan pesan asli guna analisis atau re-ingestion.
Belajar JSON
Lihat dengan tepat karakter mana saja yang memerlukan escaping sesuai spesifikasi JSON. Berguna bagi pelajar yang mempelajari ECMA-404 atau membangun JSON parser mereka sendiri.

Referensi Urutan Escape JSON

Spesifikasi JSON mendefinisikan tepat dua escape yang diwajibkan (tanda kutip ganda dan backslash) dan enam urutan escape pendek untuk karakter kontrol umum. Semua karakter kontrol lainnya (U+0000 hingga U+001F) harus menggunakan bentuk \uXXXX. Karakter di atas U+FFFF (seperti emoji) dapat direpresentasikan sebagai pasangan surrogate UTF-16: \uD83D\uDE00.

KarakterKeteranganBentuk escape
"Double quote\"
\Backslash\\
/Forward slash\/ (optional)
\nNewline (LF)\n
\rCarriage return\r
\tTab\t
\bBackspace\b
\fForm feed\f
U+0000–U+001FControl characters\u0000–\u001F
U+0080+Non-ASCII (e.g. emoji)\uXXXX or raw UTF-8

JSON Escaping vs. JSON Encoding

Developer kadang mencampuradukkan escaping sebuah string dengan encoding dokumen JSON secara keseluruhan.

String Escaping
Beroperasi pada teks di dalam nilai string JSON. Mengganti karakter khusus dengan urutan backslash agar string tetap valid di dalam tanda kutip ganda. Input: teks mentah. Output: teks yang sudah di-escape (masih memerlukan tanda kutip di sekelilingnya untuk menjadi JSON yang valid).
JSON Encoding (Serialisasi)
Mengonversi seluruh struktur data (objek, array, angka, boolean, null) menjadi representasi teks JSON. String escaping adalah satu langkah di dalam proses yang lebih besar ini. Input: sebuah struktur data. Output: dokumen JSON yang lengkap.

Contoh Kode

Setiap bahasa pemrograman utama memiliki fungsi bawaan untuk ini. Contoh dalam JavaScript, Python, Go, dan jq:

JavaScript (browser / Node.js)
// JSON.stringify escapes a value and wraps it in quotes
JSON.stringify('Line 1\nLine 2')       // → '"Line 1\\nLine 2"'

// To get just the inner escaped string (no surrounding quotes):
const escaped = JSON.stringify('She said "hello"').slice(1, -1)
// → 'She said \\"hello\\"'

// Parsing reverses the escaping
JSON.parse('"tabs\\tand\\nnewlines"')  // → 'tabs\tand\nnewlines'

// Handling Unicode: emoji in JSON
JSON.stringify('Price: 5\u20ac')       // → '"Price: 5\u20ac"' (raw euro sign)
Python
import json

# json.dumps escapes and quotes a string
json.dumps('Line 1\nLine 2')           # → '"Line 1\\nLine 2"'

# Ensure ASCII: replace non-ASCII with \uXXXX sequences
json.dumps('Caf\u00e9', ensure_ascii=True)   # → '"Caf\\u00e9"'

# Keep UTF-8 characters as-is (default in Python 3)
json.dumps('Caf\u00e9', ensure_ascii=False)  # → '"Caf\u00e9"'

# Unescape by round-tripping through json.loads
json.loads('"She said \\"hello\\""')      # → 'She said "hello"'
Go
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	// json.Marshal escapes a Go string for JSON
	raw := "Line 1\nLine 2\tindented"
	b, _ := json.Marshal(raw)
	fmt.Println(string(b))
	// → "Line 1\nLine 2\tindented"

	// Unescape with json.Unmarshal
	var out string
	json.Unmarshal([]byte(`"She said \"hello\""`), &out)
	fmt.Println(out)
	// → She said "hello"
}
CLI (jq)
# Escape a raw string into a JSON-safe value
echo 'Line 1
Line 2	with tab' | jq -Rs '.'
# → "Line 1\nLine 2\twith tab\n"

# Unescape a JSON string back to raw text
echo '"She said \"hello\""' | jq -r '.'
# → She said "hello"

Pertanyaan yang Sering Diajukan

Karakter apa saja yang harus di-escape dalam string JSON?
Spesifikasi JSON (RFC 8259) mengharuskan escaping pada tanda kutip ganda (\"), backslash (\\), dan semua karakter kontrol dari U+0000 hingga U+001F. Garis miring ke depan (/) boleh di-escape sebagai \/ tetapi ini opsional. Semua karakter Unicode lainnya, termasuk teks non-ASCII dan emoji, dapat muncul tanpa di-escape selama dokumen menggunakan encoding UTF-8.
Apa perbedaan antara JSON escape dan JSON stringify?
JSON.stringify() di JavaScript melakukan serialisasi seluruh nilai JavaScript menjadi string JSON, menambahkan tanda kutip ganda di sekelilingnya dan meng-escape karakter khusus di dalamnya. JSON escaping merujuk khusus pada penggantian karakter-per-karakter dari karakter khusus dengan urutan backslash. Memanggil JSON.stringify() pada sebuah string melakukan escaping sebagai bagian dari proses serialisasi.
Bagaimana cara meng-escape baris baru dalam JSON?
Ganti karakter baris baru literal (U+000A) dengan urutan dua karakter \n. Demikian pula, carriage return (U+000D) menjadi \r. Jika Anda menggunakan JSON.stringify() atau json.dumps() di Python, penggantian ini terjadi secara otomatis.
Mengapa string JSON saya di-escape ganda?
Escape ganda terjadi ketika sebuah string diserialisasi dua kali. Misalnya, memanggil JSON.stringify() pada string yang sudah mengandung urutan escape akan meng-escape backslash-nya lagi: \n menjadi \\n. Untuk memperbaikinya, parse string sekali dengan JSON.parse() sebelum diserialisasi ulang, atau periksa pipeline Anda untuk langkah encoding yang redundan.
Bisakah saya menggunakan tanda kutip tunggal dalam string JSON?
Tidak. Spesifikasi JSON mengharuskan tanda kutip ganda untuk semua nilai string dan nama properti. Tanda kutip tunggal bukan JSON yang valid dan akan menyebabkan parse error. Jika data sumber Anda mengandung tanda kutip tunggal, tanda tersebut tidak perlu di-escape di dalam string JSON bertanda kutip ganda karena tanda kutip tunggal adalah karakter biasa dalam konteks itu.
Apakah aman menyisipkan karakter UTF-8 yang tidak di-escape ke dalam JSON?
Ya, selama dokumen JSON di-encode dalam UTF-8, yang oleh RFC 8259 ditetapkan sebagai encoding default dan yang direkomendasikan. Karakter seperti huruf beraksen, ideograf CJK, dan emoji dapat muncul langsung dalam string tanpa escaping \uXXXX. Beberapa sistem lama mengharapkan JSON hanya ASCII; dalam kasus itu, gunakan opsi ensure_ascii di Python atau flag serupa di bahasa Anda.
Bagaimana cara meng-escape emoji dalam JSON?
Emoji di atas U+FFFF direpresentasikan dalam JSON menggunakan pasangan surrogate UTF-16. Misalnya, wajah tersenyum (U+1F600) menjadi \uD83D\uDE00. Kebanyakan serializer menangani ini secara otomatis. Jika Anda menulis JSON secara manual atau alat Anda hanya mendukung Basic Multilingual Plane, gunakan notasi pasangan surrogate. Jika tidak, sertakan emoji langsung sebagai karakter UTF-8.