在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相关,自然用这个。好了问题解决!

时间: 2024-11-08 18:58:43

在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()的相关文章

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

JavaScript:Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下: 15.2.

一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址

昨天因为要从JFrame控件获取密码,注意到一个问题,那就是用toString方法得到的不一定是你想要的,如下: jPasswordField是JFrame中的密码输入框,如果用下面的方法是得不到密码的value的: jPasswordField.getPassword().toString(); 这是因为jPasswordField.getPassword()得到的是字符数组char[],然后调用toString方法得到的是这个字符数组的hashCode,即字符数组的内存地址. 只有用下面的方

问题:C# ToString("P");结果:c#中的常用ToString()方法总结

c#中的常用ToString()方法总结 很多类都重写了ToString方法, 导致很多类的tostring到底执行了什么,有哪些参数,都不清楚 对于int,double等的tostring: C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString("E") 2.500000E+005 F 固定点 25.ToString("F2&q

java基础:Object 的toString方法

一:首先看Demo1 <strong><span style="font-size:18px;">public class Dog1{ Dog1(){ } public static void main(String[] args) { Dog1 d = new Dog1(); System.out.println(d); } }</span></strong> 输出结果: [email protected] 我们经常会看到对象的输出结果

js中通过Object.prototype.toString方法----精确判断对象的类型

判断是否为函数 function isFunction(it) {        return Object.prototype.toString.call(it) === '[object Function]';    } 判断是否为数组: function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  } 由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用

Java 中equals和toString()方法重写

1,equals方法 (1)什么时候需要重写? 如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals (2)怎么重写? class A { public int i; pulic A(int i)//构造函数 {this.i=i; } public boolean equals(Object obj)//重写equals {A aa=(A)obj; if(this.i==aa.i) return true; else return flase; } } publ

js中object的申明方法

1 //js中的对象申明使用new Object(); 2 //object类型的数据类似于数组通过下表来访问其中的值 3 //example1 4 5 var person=new Object(); 6 person.name="张三"; 7 person.age="12"; 8 person.sex="男"; 9 10 for(var i in person){ 11 console.log(i+":"+person[i

JavaScript中Object值合并方法

前言:在日常开发工作中我们可能会遇到js中对象中所有值的复制工作,也有可能是通过electron开发客户端,改版时候面临到的设置合并问题.那么本文将对此做一个简要解决方案的叙述. 介绍:比如有obj1, obj2,我们需要将obj1中的所有与obj2中相同字段相同深度的值copy给obj2,并且需要保持obj2字段结构不变,调用一下方法即可(采用ES6写法). 1 /** 2 * 将src中的数据copy到dist中,并保留dist的结构 3 * @param src 4 * @param di