簡體   English   中英

在javascript中轉義雙引號

[英]Escaping double quotation in javascript

解析看似有效的 json 時出現錯誤。 JSON 字符串在字符串中包含轉義的雙引號字符。

我已將示例壓縮為盡可能簡單地在下面復制和粘貼。 我用來測試的瀏覽器是 Chrome 版本 100.0.4896.75。

誰能幫我理解我在這里做錯了什么?

 let a = JSON.parse('{"a": "\""}');

錯誤:{“消息”:“語法錯誤:JSON.parse:預期的','或'}'在JSON數據的第1行第9列的對象中的屬性值之后”,“文件名”:“https://stacksnippets.net /js", "lineno": 13, "colno": 22 }

您需要在字符串文字中使用 2 個斜杠來表示字符串中的單個斜杠。
或者您也可以使用原始字符串模板。

 let a = JSON.parse('{"a": "\\""}'); let b = JSON.parse(String.raw`{"b": "\""}`); console.log(a,b);

在您的情況下要解析的有效字符串應該是:

 const str = '{"a":"\\""}' const parsedStr = JSON.parse(str); console.log(parsedStr);

解釋:

以下是無效的字符串初始化

 const str = "\";

有效的語法是:

 const str = "\\"; console.log(str);

因此, \\轉換為\ (第一個轉義第二個)。 在您的情況下,轉義的\然后用於轉義"

此外,這個輸出:

 const str = "\\\\"; console.log(str); const strWithQuote = "\\\"\\"; console.log("String with quote: ", strWithQuote);

JSON 解析器正在接收值'{"a": """}' ,因為\本身沒有轉義。如果你這樣做

JSON.stringify({ "a": "\"" })

你會看到字符串化的結果是'{"a":"\\""}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM