今天在自己搭建一个简易的本地服务器时,发生了一个让人费解的现象:switch(POST.act){ case 'reg': console.log('进入reg环节'); 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":"注册成功"}'); } break; case 'login': break;//登录部分尚未写完 default: res.write("{'ok':false,'msg':'未知的act'}");}res.end();当我以下用这种方式书写返回结果时,浏览器端能正常显示res.write('{"ok":false,"msg":"该用户已存在"}');//单引号在外,双引号在内而当我将双引号放在外,单引号放在内时,浏览器端就报parserror的错误。我想问的是,在js里单引号和双引号的作用不是相同的吗,在转化为json字符串时难道这两种方式有区别吗?
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
其实一切的根源是处在json的解析格式上面
正确的json格式是key值由双引号包裹,此处重点,必须是双引号!
那么,根据以上原因就可以很简单的解释这个问题了。
在解析为字符串时候,单双引号都是可以的,其内包含的文字都是字符串。
其内部字符串被转换为json时,其key值必须由双引号包裹,并且,单双引号嵌套使用时需要间隔,所以此时仅仅能够使用外层单引号,内层双引号的方式,即
'{"ok":false,"msg":"该用户已存在"}'
的方式。在使用自己的方式转换字符串为json的时候,其实并不一定需要遵守严格的json格式,但是无论从什么角度来说,都还是遵守标准为好。
三层以及以上的嵌套情况下,需要进行转义,也遵守间隔嵌套的规范。
添加回答
举报
0/150
提交
取消