JSON Escape & Unescape: Verschachtelte Daten korrekt verarbeiten

2024-04-15

Queues, Logs und DB-Spalten enthalten oft JSON als String innerhalb von JSON. Wer Escape-Sequenzen versteht, kann solche Payloads zuverlässig entpacken.

Zeichen, die escaped werden müssen

In Strings müssen ", \\ und Steuerzeichen wie \n oder \t escaped werden.

{
  "quote": "He said \"Hello\"",
  "path": "C:\\temp\\data"
}

JSON als verschachtelter String

Zuerst die äußere Ebene parsen, dann JSON.parse auf das innere String-Feld anwenden.

{ "payload": "{\"id\":1,\"name\":\"Alice\"}" }

Doppelte Escapes in Logs

Backslashes nicht manuell zählen, sondern wiederholt parsen, bis ein Objekt oder der erwartete End-String erreicht ist.

Sicheres Unescaping

Verwende JSON.parse statt Regex-Ersetzungen. Nach dem Parsen untrusted Daten strukturell validieren (z. B. __proto__-Schlüssel).

Andere Kontexte (SQL, Shell)

JSON-Escaping ist nicht dasselbe wie SQL- oder Shell-Quoting. Objekte bauen, JSON.stringify nutzen und danach kontextspezifisch escapen.

Empfohlener Workflow

Einfügen -> parsen -> formatieren -> innere Parse-Schritte auf verbleibende String-Felder -> fachliche Validierung.