求教大神 JSON.parse()报错的问题。

var a = "{'a1':'a','a2':'b'}";
var b = '{"a1":"a","a2":"b"}';
console.info(typeof JSON.parse(a));//这个会报错
console.info(typeof JSON.parse(b));//这个不会报错
对于上面这串代码,一个报错,一个不报错;就一个双引号与单引号的不同,为什么区别这么大,求教大神指点下,谢谢啦

1个回答

参数要求是字符串,所以你传单引号(字符)会报错

参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

u012115125
风雨同舟- http://www.bejson.com/ 用这个你可以验证json字符串是否合法
3 年多之前 回复
u012115125
风雨同舟- var c = "{"a1":"a","a2":"b"}"; 这个应该也不会保存
3 年多之前 回复
u012115125
风雨同舟- 回复ybdt1201: 是我没表达清楚,a,b都是字符串型,这个单引号双引号没区别,是json字符串的格式不对
3 年多之前 回复
ybdt1201
ybdt1201 回复ybdt1201: 回复ybdt1201: 明白了,原来parse括号内的变量必须是有正确json格式的,json格式的对象,不允许使用单引号,只能使用双引号
3 年多之前 回复
ybdt1201
ybdt1201 单引号包含的应该也是字符吧,我tapeof了上面的a和b,结果都是string,单引号和双引号有区别吗
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问