[英]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.