JSON.parse解析单引号名值对报错
今天整理代码的时候发现JSON.pare解析时会报了⼀个错误,⽽且很难原因,调试了⼏分钟没有成功,猜测可能是单双引号引起的错误。修改了单双引号后程序正常运⾏了,现在记录下这个bug。
关于JSON.parse()的⽤法可以参考这⾥ technet.microsoft/zh-cn/sysinternals/cc836466(en-us,VS.85).aspx
正题如下…………………………………………………………………………
⾸先要区分json和js对象,在javascript中json的名和值都需要引号包裹的,⽐如{"a":"b"}; ⽽js对象,只有值必须包裹名可以包裹也可以不包裹,⽐如{a:"b"}这样是正确的{"a":"b"}这样也是正确的。
1、名值对使⽤单引号包裹
因为平常都是⽤双引号包裹字符串的,所以我把要转化的字符串⾃然就写成这样⼦了。
var str="{'a':'1'}"
然后当我兴奋的使⽤JSON.parse接收对象的时候,呃,报错了
var json=JSON.parse(str);
看到这个结果,也看不出来原因。着实郁闷了⼀会。忽然想到是不是单双引号的问题,对调下发现成功了。
2、名值对使⽤双引号包裹
var str='{"a":"1"}';
var json=JSON.parse(str);
名值对使⽤双引号包裹发现成功了。
3、全部使⽤双引号包裹,当然这时候引号要转义
var str="{\"a\":\"1\"}";
error parse newvar json=JSON.parse(str);
结果也是成功的
结论:使⽤JSON的parse将json形式的字符串转化为json的时候,名值对都必须使⽤双引号包裹
ps:如果有哪位⼤神知道为什么,请邮件⼩弟
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论