喵喵時(shí)光機(jī)
2018-12-11 13:18:10
今天在自己搭建一個(gè)簡(jiǎn)易的本地服務(wù)器時(shí),發(fā)生了一個(gè)讓人費(fèi)解的現(xiàn)象:switch(POST.act){ case 'reg': console.log('進(jìn)入reg環(huán)節(jié)'); console.log(users[POST.user]); console.log(users); if(users[POST.user]){ res.write('{"ok":false,"msg":"該用戶已存在"}'); }else{ users[POST.user]=POST.pass; console.log(users); res.write('{"ok":true,"msg":"注冊(cè)成功"}'); } break; case 'login': break;//登錄部分尚未寫完 default: res.write("{'ok':false,'msg':'未知的act'}");}res.end();當(dāng)我以下用這種方式書寫返回結(jié)果時(shí),瀏覽器端能正常顯示res.write('{"ok":false,"msg":"該用戶已存在"}');//單引號(hào)在外,雙引號(hào)在內(nèi)而當(dāng)我將雙引號(hào)放在外,單引號(hào)放在內(nèi)時(shí),瀏覽器端就報(bào)parserror的錯(cuò)誤。我想問的是,在js里單引號(hào)和雙引號(hào)的作用不是相同的嗎,在轉(zhuǎn)化為json字符串時(shí)難道這兩種方式有區(qū)別嗎?
1 回答

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
其實(shí)一切的根源是處在json的解析格式上面
正確的json格式是key值由雙引號(hào)包裹,此處重點(diǎn),必須是雙引號(hào)!
那么,根據(jù)以上原因就可以很簡(jiǎn)單的解釋這個(gè)問題了。
在解析為字符串時(shí)候,單雙引號(hào)都是可以的,其內(nèi)包含的文字都是字符串。
其內(nèi)部字符串被轉(zhuǎn)換為json時(shí),其key值必須由雙引號(hào)包裹,并且,單雙引號(hào)嵌套使用時(shí)需要間隔,所以此時(shí)僅僅能夠使用外層單引號(hào),內(nèi)層雙引號(hào)的方式,即
'{"ok":false,"msg":"該用戶已存在"}'
的方式。在使用自己的方式轉(zhuǎn)換字符串為json的時(shí)候,其實(shí)并不一定需要遵守嚴(yán)格的json格式,但是無論從什么角度來說,都還是遵守標(biāo)準(zhǔn)為好。
三層以及以上的嵌套情況下,需要進(jìn)行轉(zhuǎn)義,也遵守間隔嵌套的規(guī)范。
添加回答
舉報(bào)
0/150
提交
取消