JSON.parse解析双引号嵌套单引号格式的数据

示例:

1
const str = "['123', '456', '789']"

当存在这种数据时 JSON.parse 无法直接解析,会提示 SyntaxError: Unexpected token ' in JSON at position 1 的错误。

解决方案:

  • eval() eval语法可以简单方便的解决 JSON.parse 无法解析的问题,但这个语法不推荐使用。它会将传入的字符串当做 JavaScript 代码进行执行。这有可能会导致被运行恶意代码,而且它必须调用JS解释器会比其他替代方法更慢。
  • str.replace(/'/g, '"') 推荐使用 replace() 将单引号替换为双引号,然后再使用 JSON.parse

示例:

1
2
3
4
5
6
7
const str = "['123', '456', '789']"

console.log(JSON.parse(str.replace(/'/g, '"')))

// 输出

[ '123', '456', '789' ]