JSON.parse解析單引號名值對報錯


今天整理代碼的時候發現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:如果有哪位大神知道為什么,請郵件小弟

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM