欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

node.js中的querystring.parse方法使用说明_node.js

程序员文章站 2022-04-19 19:56:35
...
方法说明:

将字符串转成对象。说白了其实就是把url上带的参数串转成数组对象。(看例子就知道咯)

语法:

复制代码 代码如下:

querystring.parse(str, [sep], [eq], [options])

接收参数:

str 欲转换的字符串

sep 设置分隔符,默认为 ‘&'

eq 设置赋值符,默认为 ‘='

[options] maxKeys 可接受字符串的最大长度,默认为1000

例子:

复制代码 代码如下:

querystring.parse('foo=bar&baz=qux&baz=quux&corge')
// returns
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

源码:

复制代码 代码如下:

// Parse a key=val string.
QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
sep = sep || '&';
eq = eq || '=';
var obj = {};
if (!util.isString(qs) || qs.length === 0) {
return obj;
}
var regexp = /\+/g;
qs = qs.split(sep);
var maxKeys = 1000;
if (options && util.isNumber(options.maxKeys)) {
maxKeys = options.maxKeys;
}
var len = qs.length;
// maxKeys if (maxKeys > 0 && len > maxKeys) {
len = maxKeys;
}
for (var i = 0; i var x = qs[i].replace(regexp, '%20'),
idx = x.indexOf(eq),
kstr, vstr, k, v;
if (idx >= 0) {
kstr = x.substr(0, idx);
vstr = x.substr(idx + 1);
} else {
kstr = x;
vstr = '';
}
try {
k = decodeURIComponent(kstr);
v = decodeURIComponent(vstr);
} catch (e) {
k = QueryString.unescape(kstr, true);
v = QueryString.unescape(vstr, true);
}
if (!hasOwnProperty(obj, k)) {
obj[k] = v;
} else if (util.isArray(obj[k])) {
obj[k].push(v);
} else {
obj[k] = [obj[k], v];
}
}
return obj;
};