今天整理代碼的時候發現JSON.pare解析時會報了一個錯誤,而且很難找原因,調試了幾分鍾沒有成功,猜測可能是單雙引號引起的錯誤。修改了單雙引號后程序正常運行了,現在記錄下這個bug。
關於JSON.parse()的用法可以參考這里 https://technet.microsoft.com/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\"}"; var json=JSON.parse(str);
結果也是成功的

結論:使用JSON的parse將json形式的字符串轉化為json的時候,名值對都必須使用雙引號包裹
ps:如果有哪位大神知道為什么,請郵件小弟
