Du musst einen JSON-String in einen anderen JSON-String einbetten — vielleicht eine Log-Nachricht, die selbst ein JSON-Payload enthält. Oder du schreibst einen Shell-Befehl, der einen String mit Anführungszeichen enthält. Oder du baust eine URL, die eine andere URL als Query-Parameter tragen muss. Jede dieser Situationen erfordert Escaping: Zeichen, die sonst als Syntax interpretiert würden, in eine Form zu konvertieren, die als literale Daten behandelt wird.
Verschiedene Kontexte escapen unterschiedlich. JSON escapet Anführungszeichen mit einem Backslash und stellt Sonderzeichen wie Zeilenumbrüche als \n dar. Shell-Escaping hängt davon ab, welchen Quoting-Stil du verwendest. URL-Escaping prozentkodiert reservierte Zeichen auf eine völlig andere Art als die beiden anderen. Diese zu verwechseln — JSON-Escaping anzuwenden, wo URL-Escaping nötig war — erzeugt Output, der fast richtig aussieht und auf verwirrende Weise fehlschlägt.
Das Doppel-Escaping-Problem
Einer der häufigsten Bugs in diesem Bereich ist Doppel-Escaping: Ein String wird einmal von deinem Code escaped und nochmal von einer Bibliothek oder einem Framework, das davon ausgeht, er sei noch roh, wodurch aus einem einzelnen Backslash zwei werden und die Daten leise korrumpiert werden. Das zu diagnostizieren erfordert schrittweises Unescaping, um genau zu sehen, wo die zusätzliche Schicht hinzugefügt wurde — mühsam von Hand, besonders bei einem langen String.
Escape und Unescape für mehrere Formate
Bellows enthält String-Escaping-Tools für JSON-, HTML- und URL-Formate unter seinen 41 Entwickler-Tools. Füge einen rohen String ein, um ihn korrekt für einen bestimmten Kontext escaped zu sehen, oder füge einen escaped String ein, um den originalen Rohwert zu sehen.
Strings in Strings einbetten
Ein JSON-Payload zu bauen, der selbst einen JSON-String als Feldwert enthält, oder eine Log-Nachricht zu konstruieren, die beliebige Nutzereingaben sicher einschließen muss — beides erfordert korrektes Escaping, um die äußere Struktur nicht zu korrumpieren.
Doppelt escapte Daten diagnostizieren
Wenn ein String aussieht, als sei er öfter escaped worden als nötig, enthüllt schrittweises Unescaping genau, wo die zusätzliche Kodierung eingeführt wurde — was normalerweise der schnellste Weg ist, den verantwortlichen Code aufzuspüren.