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

  方法说明:

  将字符串转成对象。说白了其实就是把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 <= 0 means that we should not limit keys count

  if (maxKeys > 0 && len > maxKeys) {

  len = maxKeys;

  }

  for (var i = 0; i < len; ++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;

  };