在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()
Posted 啄木鸟伍迪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()相关的知识,希望对你有一定的参考价值。
刚学nodejs,做到一个例子:发送简单的HTTP请求。遇到一个问题,客户端给服务端发送的消息到服务端,服务端收不到消息,确切的说是“”。
以下是服务端代码:server.js
const http = require("http"); const qs = require("querystring") http.createServer(function(request,response){ var body =""; request.on("data",function(chunk){ body+=chunk; }) request.on("end",function(){ response.writeHead(200,{"ContentType":"text/html;charset=utf-8"}); console.log(body) process.stdout.write("got name :"+ qs.parse(body)["name"]+"\\n") }) }).listen(3000);
以下是客户端代码:
var http = require("http"); var qs = require("querystring") var options = { hostname: \'127.0.0.1\', port: 3000, path: \'/\', method: \'POST\', }; function getname(theName){
var b = {name:theName};
var a=qs.stringify(b)
console.log(typeof theName)
console.log("theName:"+theName+" ,b转换为string后的a:"+a);
http.request(options,function(response){
response.setEncoding(\'utf8\');
var body ="";
response.on(\'data\', function(chunk){
body+=chunk;
});
response.on(\'end\',function (){
process.stdout.write("client compate!\\n");
})
}).end(a);
} //正确代码 process.stdin.on("data",function(inputData){ process.stdout.write("your name:"+inputData); console.log("输入内容: "+inputData+" 转换为string后:"+inputData.toString().replace("\\r\\n",""))//inputData 有回车 getname(inputData.toString().replace("\\r\\n","")); })
//错误代码
process.stdin.on("data",function(inputData){ process.stdout.write("your name:"+inputData); getname(inputData); })
服务端,在这里无需多说。我们看到客户端的错误代码:这里,没有对接收到的“用户输入数据”的inputData处理,所以这里的inputData是Object类型;
看到客户端反馈结果:
服务端的返回结果:
相继查看了b的类型:
相信这里已经知道了问题的根源:获得的参数是一个buffer类型的,导致后面解析出问题。那么在调用getname的时候把参数转换好就行了。这个逻辑应该可行。
但是在这里我就有一个疑问,这个接收到的输入的对象该怎么转换呢?
querystring:其中nodejs中有一个模块,querystring,作用是对URL的查询字符串进行解析;有stringify() 和parse()两个方法,一个是转字符串,一个是解析为对象;
JSON处理JSON字符串的;JSON.stringify()可以解析为string;
toString()方法:都可以解析为string
这里我们采用的是inputData.toString().这里只是传递参数,也不是跟URL相关,自然用这个。好了问题解决!
以上是关于在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS 异步 JSON 解析导致 Buffer.toString() 失败
Java中Object.toString()返回的字符串的含义
JavaScript中Object.prototype.toString方法的原理
JavaScript中Object.prototype.toString方法的原理