我的值是一个字符串:
"['Eitaj', 'Jason Json', 'Eitaj M', "Jason Json's"]"
我正在尝试使用JSON.parse()
进行解析,
但是,我得到了错误
未捕获的SyntaxError:JSON中位置1处的意外令牌'
我发现可以正常工作的字符串是:
JSON.parse('["Eitaj", "Jason Json", "Eitaj M", "Jason Json\'s"]')
除了将单引号和双引号引起来之外,我还有其他技巧吗?
答案 0 :(得分:2)
检查它是否适合您。
let s = "['Eitaj', 'Jason Json', 'Eitaj M', \"Jason Json's\"]";
let parsed = JSON.parse(s.split(",").map(seg => {
return seg.replace(new RegExp("'.*'", "g"), function(match) {
return '"' + match.substring(1, match.length - 1) + '"';
})
}).join(","));
console.log(parsed);
更新1
这将处理注释中提到的上述片段的缺陷。但是,根据您的要求,还有其他一些极端情况应该处理。
let s = "['Eitaj', 'Jason Json', 'Eitaj M', \"Jason Json's\",\"Test'test'Test\",'Acme, Inc.',\"'Test'\"]";
let parsed = JSON.parse("[" + s.substring(1, s.length - 1).match(new RegExp(`((['\""]).*?(\\2))`, "g")).map(seg => {
return seg.trim().replace(new RegExp("^'.*'$", "g"), function(match) {
return '"' + match.substring(1, match.length - 1) + '"';
})
}).join(",") + "]")
console.log(parsed);