·4 min leestijd

String escapen en unescapen voor Mac — JSON, HTML, URL

Het ene stringformaat in het andere embedden betekent aanhalingstekens, schuine strepen en speciale tekens correct escapen, of je parser laten stikken.

Je moet een JSON-string embedden in een andere JSON-string — misschien een logbericht dat zelf een JSON-payload bevat. Of je schrijft een shell-commando dat een string met aanhalingstekens erin bevat. Of je bouwt een URL die een andere URL als queryparameter moet meedragen. Elk van deze situaties vereist escapen: tekens die anders als syntax geïnterpreteerd zouden worden, omzetten naar een vorm die als letterlijke data behandeld wordt.

Verschillende contexten escapen anders. JSON escapet aanhalingstekens met een backslash en stelt speciale tekens zoals nieuwe regels voor als \n. Shell-escaping hangt af van welke quotingstijl je gebruikt. URL-escaping percentcodeert gereserveerde tekens totaal anders dan de andere twee. Deze door elkaar halen — JSON-escaping toepassen waar URL-escaping nodig was — levert uitvoer op die er bijna goed uitziet en op verwarrende manieren faalt.

Het probleem van dubbel escapen

Een van de meest voorkomende bugs op dit gebied is dubbel escapen: een string wordt één keer geëscaped door je code en nogmaals door een library of framework dat ervan uitgaat dat hij nog ruw is, waardoor één backslash er twee wordt en de data stilletjes corrumpeert. Dit diagnosticeren vereist stap voor stap unescapen om precies te zien waar de extra laag is geïntroduceerd — vervelend om met de hand te doen, vooral bij een lange string.

Escapen en unescapen voor meerdere formaten

Bellows bevat string-escapetools die JSON, HTML en URL-formaten dekken tussen zijn 41 developer tools. Plak een ruwe string om hem correct geëscaped te zien voor een bepaalde context, of plak een geëscapete string om de originele ruwe waarde te zien.

Bellows string escape- en unescape-tool op macOS

Strings in strings embedden

Een JSON-payload bouwen die zelf een JSON-string als veldwaarde bevat, of een logbericht construeren dat willekeurige gebruikersinvoer veilig moet bevatten, vereisen beide correcte escaping om de buitenste structuur niet te corrumperen.

Dubbel geëscapete data diagnosticeren

Wanneer een string eruitziet alsof hij vaker geëscaped is dan zou moeten, onthult hem laag voor laag unescapen precies waar de extra codering is geïntroduceerd, wat meestal de snelste manier is om de verantwoordelijke code te achterhalen.

Haal Bellows in de Mac App Store

Volgend artikel

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store