JSON string escaping is het proces waarbij speciale tekens in een string worden omgezet naar escape-sequenties die JSON-parsers kunnen lezen zonder de structuur te verstoren. De JSON-specificatie (ECMA-404 / RFC 8259) vereist dat bepaalde tekens binnen stringwaarden worden voorafgegaan door een backslash. Zonder correcte escaping zou een letterlijk aanhalingsteken of een regelafbreking in een string de string vroegtijdig beëindigen en een parseerfout veroorzaken.
Elke JSON-string wordt begrensd door dubbele aanhalingstekens. Wanneer de string zelf een dubbel aanhalingsteken, een backslash of een stuurkarakter (U+0000 t/m U+001F) bevat, moet het teken worden vervangen door de bijbehorende escape-sequentie. Zo wordt een letterlijke regelafbreking \n, een tab \t en een dubbel aanhalingsteken \". Elk Unicode-codepunt kan ook worden weergegeven als \uXXXX, waarbij XXXX de viercijferige hexadecimale waarde is.
Unescaping (de omgekeerde bewerking) zet die backslash-sequenties terug naar de oorspronkelijke tekens. Gebruik dit wanneer je een JSON-payload ontvangt waarbij stringwaarden dubbel zijn geëscaped, of wanneer je ruwe tekst wilt extraheren uit een JSON-logvermelding voor weergave in een UI of terminal. Log-aggregatiepijplijnen lopen hier constant tegenaan: wanneer een JSON-gecodeerd bericht als stringwaarde wordt opgeslagen in een ander JSON-document, komen alle backslashes in de binnenste string verdubbeld aan.
Waarom een JSON escape-tool gebruiken?
Handmatig backslashes toevoegen of verwijderen is omslachtig en foutgevoelig, zeker bij tekst met meerdere regels, bestandspaden of ingesloten codefragmenten. Een aparte escape-tool vangt randgevallen op die handmatige bewerking mist.
🔒
Privacy-first verwerking
Je strings verlaten je browser nooit. Alle escaping en unescaping draait lokaal in JavaScript zonder serververzoeken, zodat gevoelige gegevens zoals API-sleutels of tokens op je apparaat blijven.
⚡
Directe conversie
Plak willekeurige tekst en ontvang correct geëscapede JSON-uitvoer binnen milliseconden. Geen wachttijd voor een verbinding met een externe server.
🛡️
Geen account of installatie
Open de pagina en begin met escapen. Geen registratieformulier, geen browserextensie, geen CLI-tool om te installeren. Werkt op elk apparaat met een moderne browser.
📋
Volledige tekendekking
Verwerkt alle JSON-verplichte escapes: dubbele aanhalingstekens, backslashes, stuurkarakters (U+0000 t/m U+001F) en Unicode-sequenties inclusief emoji en CJK-tekens.
Gebruiksscenario's voor JSON string escaping
Frontend-ontwikkeling
Escape door gebruikers gegenereerde inhoud voordat je die insluit in een JSON-payload die via fetch of XMLHttpRequest wordt verzonden. Voorkomt misvormde verzoeken wanneer gebruikers aanhalingstekens, regelafbrekingen of emoji typen.
Backend API-werk
Bouw JSON-antwoordbodies in talen die strings niet automatisch escapen (shellscripts, opgeslagen SQL-procedures, template-engines). Plak de ruwe string en kopieer de geëscapede versie.
DevOps en configuratie
Sluit meerdere-regels-PEM-blokken voor certificaten, SSH-sleutels of shellscripts in JSON-configuratiebestanden in voor Terraform, CloudFormation of Kubernetes ConfigMaps zonder de JSON-structuur te verstoren.
QA en testen
Maak testfixtures met randgevaltekens: tabs, null-bytes, Unicode surrogaatparen en geneste geëscapede strings. Controleer of je parser ze correct afhandelt.
Data-engineering
Ruim dubbel-geëscapede logvermeldingen op uit Elasticsearch, CloudWatch of Datadog. Unescape de string om het oorspronkelijke bericht te herstellen voor analyse of heropname.
JSON leren
Zie precies welke tekens escaping vereisen volgens de JSON-specificatie. Nuttig voor studenten die ECMA-404 doorwerken of hun eigen JSON-parser bouwen.
Referentie voor JSON escape-sequenties
De JSON-specificatie definieert precies twee verplichte escapes (dubbel aanhalingsteken en backslash) en zes korte escape-sequenties voor veelgebruikte stuurkarakters. Alle andere stuurkarakters (U+0000 t/m U+001F) moeten de \uXXXX-notatie gebruiken. Tekens boven U+FFFF (zoals emoji) kunnen worden weergegeven als een UTF-16 surrogaatpaar: \uD83D\uDE00.
Teken
Beschrijving
Geëscapede vorm
"
Double quote
\"
\
Backslash
\\
/
Forward slash
\/ (optional)
\n
Newline (LF)
\n
\r
Carriage return
\r
\t
Tab
\t
\b
Backspace
\b
\f
Form feed
\f
U+0000–U+001F
Control characters
\u0000–\u001F
U+0080+
Non-ASCII (e.g. emoji)
\uXXXX or raw UTF-8
JSON escaping versus JSON encoding
Ontwikkelaars verwarren het escapen van een string soms met het encoderen van een volledig JSON-document.
String escaping
Werkt op de tekst binnen een JSON-stringwaarde. Vervangt speciale tekens door backslash-sequenties zodat de string geldig blijft binnen dubbele aanhalingstekens. Invoer: ruwe tekst. Uitvoer: geëscapede tekst (heeft nog wel omliggende aanhalingstekens nodig om geldige JSON te zijn).
JSON encoding (serialisatie)
Zet een volledige gegevensstructuur (objecten, arrays, getallen, booleans, nulls) om naar een JSON-tekstrepresentatie. String escaping is één stap in dit grotere proces. Invoer: een gegevensstructuur. Uitvoer: een volledig JSON-document.
Codevoorbeelden
Elke grote programmeertaal heeft ingebouwde functies hiervoor. Voorbeelden in JavaScript, Python, Go en 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"
Veelgestelde vragen
Welke tekens moeten worden geëscaped in een JSON-string?
De JSON-specificatie (RFC 8259) vereist escaping van het dubbele aanhalingsteken (\"), de backslash (\\) en alle stuurkarakters van U+0000 t/m U+001F. De schuine streep (/) mag worden geëscaped als \/ maar dit is optioneel. Alle andere Unicode-tekens, inclusief niet-ASCII-tekst en emoji, mogen ongeëscaped voorkomen zolang het document UTF-8-codering gebruikt.
Wat is het verschil tussen JSON escaping en JSON stringify?
JSON.stringify() in JavaScript serialiseert een volledige JavaScript-waarde naar een JSON-string, waarbij omliggende dubbele aanhalingstekens worden toegevoegd en speciale tekens binnenin worden geëscaped. JSON escaping verwijst specifiek naar de tekengerichte vervanging van speciale tekens door backslash-sequenties. JSON.stringify() aanroepen op een string voert escaping uit als onderdeel van het serialisatieproces.
Hoe escape ik een regelafbreking in JSON?
Vervang het letterlijke regelafbrekingsteken (U+000A) door de tweekaraktersreeks \n. Op dezelfde manier wordt een carriage return (U+000D) \r. Als je JSON.stringify() of json.dumps() in Python gebruikt, worden deze vervangingen automatisch uitgevoerd.
Waarom is mijn JSON-string dubbel geëscaped?
Dubbele escaping treedt op wanneer een string twee keer wordt geserialiseerd. Bijvoorbeeld: het aanroepen van JSON.stringify() op een string die al escape-sequenties bevat, zal de backslashes opnieuw escapen — \n wordt \\n. Om dit te verhelpen, parseer de string eerst met JSON.parse() voor je opnieuw serialiseert, of controleer je pijplijn op overbodige coderingstappen.
Mag ik enkele aanhalingstekens gebruiken in JSON-strings?
Nee. De JSON-specificatie vereist dubbele aanhalingstekens voor alle stringwaarden en eigenschapsnamen. Enkele aanhalingstekens zijn geen geldige JSON en veroorzaken een parseerfout. Als je brongegevens enkele aanhalingstekens bevatten, hoeven die niet te worden geëscaped binnen een JSON-string met dubbele aanhalingstekens, omdat enkele aanhalingstekens gewone tekens zijn in die context.
Is het veilig om ongeëscapede UTF-8-tekens in JSON te plaatsen?
Ja, zolang het JSON-document is gecodeerd in UTF-8, wat RFC 8259 aanwijst als de standaard en aanbevolen codering. Tekens zoals letters met accenten, CJK-ideogrammen en emoji kunnen direct in de string voorkomen zonder \uXXXX-escaping. Sommige oudere systemen verwachten ASCII-only JSON; gebruik in dat geval de ensure_ascii-optie in Python of een vergelijkbare instelling in je programmeertaal.
Hoe escape ik emoji in JSON?
Emoji boven U+FFFF worden in JSON weergegeven met een UTF-16 surrogaatpaar. Bijvoorbeeld wordt het grijnzende gezicht (U+1F600) \uD83D\uDE00. De meeste serializers verwerken dit automatisch. Als je JSON met de hand schrijft of je tooling alleen het Basic Multilingual Plane ondersteunt, gebruik dan de surrogaatpaarnotatie. Anders kun je de emoji direct als UTF-8-teken opnemen.