关于node中的res.write()的引号问题

今天在自己搭建一个简易的本地服务器时,发生了一个让人费解的现象:


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字符串时难道这两种方式有区别吗?


喵喵时光机
浏览 1561回答 1
1回答

料青山看我应如是

其实一切的根源是处在json的解析格式上面正确的json格式是key值由双引号包裹,此处重点,必须是双引号!那么,根据以上原因就可以很简单的解释这个问题了。在解析为字符串时候,单双引号都是可以的,其内包含的文字都是字符串。其内部字符串被转换为json时,其key值必须由双引号包裹,并且,单双引号嵌套使用时需要间隔,所以此时仅仅能够使用外层单引号,内层双引号的方式,即'{"ok":false,"msg":"该用户已存在"}'的方式。在使用自己的方式转换字符串为json的时候,其实并不一定需要遵守严格的json格式,但是无论从什么角度来说,都还是遵守标准为好。三层以及以上的嵌套情况下,需要进行转义,也遵守间隔嵌套的规范。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript