Node.js 查询字符串处理模块querystring

 2015年06月11日    1801     声明


querystring模块是Node.js中的工具模块之一,用于处理URL中的查询字符串,即:querystring部分。查询字符串指:URL字符串中,从问号"?"(不包括?)开始到锚点"#"或者到URL字符串的结束(存在#,则到#结束,不存在则到URL字符串结束)的部分叫做查询字符串。querystring模块可将URL查询字符串解析为对象,或将对象序列化为查询字符串。

querystring模块是Node.js的原生模块,要引用require(‘querystring’) 即可。querystring模块中包括以下4个方法:

  1. 将对象序列化为一个查询字符串:querystring.stringify(obj[, sep][, eq][, options])
  2. 将查询字符串解析为对象:querystring.parse(str[, sep][, eq][, options])
  3. 编码查询字符串中的参数:querystring.escape
  4. 解码查询字符串中的参数:querystring.unescape

1. 将对象序列化为一个查询字符串:querystring.stringify(obj[, sep][, eq][, options])

querystring.stringify方法可以将对象序列化为一个querystring,使用示例如下:

var querystring = require('querystring');

var itbilu = {siteName:'IT笔录', url:'http://itbilu.com'};
console.log(querystring.stringify(itbilu));
//输出如下
siteName=IT%E7%AC%94%E5%BD%95&url=http%3A%2F%2Fitbilu.com

不指定后面三个可选参数时,默认用"&"(分割符)连接参数,"="(分配符)符号连接参数名和参数值,并用encodeURIComponent方法对参数进行编码。序列化对象时,可以指定分割符和分配符。示例如下:

var querystring = require('querystring');

var itbilu = {siteName:'IT笔录', url:'http://itbilu.com'};
console.log(querystring.stringify(itbilu, ';', ':'));
//输出如下
siteName:IT%E7%AC%94%E5%BD%95;url:http%3A%2F%2Fitbilu.com


2. 将查询字符串解析为对象:querystring.parse(str[, sep][, eq][, options])

querystring.parse方法用于将查询字符串解析为对象,传入第二个和第三个可选参数时,会覆盖默认的分割符('&')和分配符('=')。options对象中包含maxKeys属性,默认为1000,用于限制处理过的键(key)的数量,设为0可以去除键(key)的数量限制。示例如下:

var querystring = require('querystring');

console.log(querystring.parse('siteName=IT笔录&url=http://itbilu.com'));
console.log(querystring.parse('siteName:IT笔录;url:http://itbilu.com',';',':'));
//上面两行输出相同,如下:
{ siteName: 'IT笔录', url: 'http://itbilu.com' }


3. 编码查询字符串中的参数:querystring.escape

querystring.escape方法会对查询字符串进行编码,在使用querystring.stringify方法时可能会用到。示例如下:

var querystring = require('querystring');

console.log(querystring.escape('siteName=IT笔录&url=http://itbilu.com'));

//输出如下
siteName%3DIT%E7%AC%94%E5%BD%95%26url%3Dhttp%3A%2F%2Fitbilu.com


4. 解码查询字符串中的参数:querystring.unescape

querystring.unescape方法是和querystring.escape相逆的方法,在使用querystring.parse方法时可能会用到。简单示例如下

var querystring = require('querystring');

var esc = querystring.escape('siteName=IT笔录&url=http://itbilu.com');
console.log(querystring.unescape(esc));

//输出如下
siteName=IT笔录&url=http://itbilu.com