JSON.parse() 和转义字符在 JavaScript 中如何工作?
How do JSON.parse() and escape characters work in JavaScript?
假设我有一个对象变量:
var obj = {
key: '\"Hello World\"'
}
然后我尝试使用 Chrome devtools 控制台中的 JSON.stringify
将其解析为字符串:
JSON.stringify(obj) // "{"key":"\"Hello World\""}"
我得到了结果"{"key":"\"Hello World\""}"
。然后我把它给一个字符串
var str = '{"key":"\"Hello World\""}'
至少我尝试将它转换回 obj:
JSON.parse(str);
但是浏览器告诉我错误Uncaught SyntaxError
让我困惑的是为什么这是错误的?我从原始对象获取字符串,我只想将其返回。
我该如何解决这个问题?如果我想完成将 obj 转换为字符串并 return 返回的工作,我该怎么做?
您试图通过将 JSON 包装在 '
个字符中将其转换为字符串文字,但 \
个字符在 JavaScript 个字符串文字中具有特殊含义\"
在到达 JSON 解析器之前被 JavaScript 解析器转换为 "
。
您也需要转义 \
个字符。
var str = '{"key":"\"Hello World\""}'
也就是说,一般来说,最好不要尝试将 JSON 嵌入 JavaScript 字符串文字中,而只是首先用 JSON.parse 解析它们。 JSON 语法是 JavaScript 的子集,因此您可以直接使用它。
var result = {"key":"\"Hello World\""};
尝试:
var str = '{"key":"\"Hello World\""}';
假设我有一个对象变量:
var obj = {
key: '\"Hello World\"'
}
然后我尝试使用 Chrome devtools 控制台中的 JSON.stringify
将其解析为字符串:
JSON.stringify(obj) // "{"key":"\"Hello World\""}"
我得到了结果"{"key":"\"Hello World\""}"
。然后我把它给一个字符串
var str = '{"key":"\"Hello World\""}'
至少我尝试将它转换回 obj:
JSON.parse(str);
但是浏览器告诉我错误Uncaught SyntaxError
让我困惑的是为什么这是错误的?我从原始对象获取字符串,我只想将其返回。
我该如何解决这个问题?如果我想完成将 obj 转换为字符串并 return 返回的工作,我该怎么做?
您试图通过将 JSON 包装在 '
个字符中将其转换为字符串文字,但 \
个字符在 JavaScript 个字符串文字中具有特殊含义\"
在到达 JSON 解析器之前被 JavaScript 解析器转换为 "
。
您也需要转义 \
个字符。
var str = '{"key":"\"Hello World\""}'
也就是说,一般来说,最好不要尝试将 JSON 嵌入 JavaScript 字符串文字中,而只是首先用 JSON.parse 解析它们。 JSON 语法是 JavaScript 的子集,因此您可以直接使用它。
var result = {"key":"\"Hello World\""};
尝试:
var str = '{"key":"\"Hello World\""}';