我无法将以下字符串解析为JSON数组:
var timeSlots = "['11AM-12PM', '1PM-2PM']";
JSON.parse(timeSlots);
引发以下错误:
VM163:1未捕获的SyntaxError:JSON中位置1处的意外令牌'
答案 0 :(得分:4)
在JSON中,名称/值对由一个字段名(用双引号引起来),一个冒号,一个值组成。
将单引号替换为双引号,并在转义(\
)字符前加上前缀:
var timeSlots = "[\"11AM-12PM\", \"1PM-2PM\"]";
console.log(JSON.parse(timeSlots));
OR::您可以简单地用单引号将字符串包装起来,而无需转义双引号:
var timeSlots = '["11AM-12PM", "1PM-2PM"]';
console.log(JSON.parse(timeSlots));
答案 1 :(得分:1)
尝试其中的任何一种
var timeSlots = "[\"11AM-12PM\", \"1PM-2PM\"]";
或
var timeSlots = '["11AM-12PM", "1PM-2PM"]';
答案 2 :(得分:1)
最后,找到解决方法
var timeSlots = "['11AM-12PM', '1PM-2PM']";
timeSlots.replace(/'/g, '"');
console.log(JSON.parse(timeSlots));
答案 3 :(得分:-1)
JSON.parse需要双引号,但是如果要修改输入内容是很挑剔的,则可以使用以下技巧:
var timeSlots = "['11AM-12PM', '1PM-2PM']";
console.log(JSON.parse(JSON.stringify(timeSlots)));