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


Posted in Javascript onDecember 10, 2014

方法说明:

将字符串转成对象。说白了其实就是把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;

};
Javascript 相关文章推荐
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
Sep 04 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
Jul 26 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
Javascript的无new构建实例详解
May 15 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
基于打包工具Webpack进行项目开发实例
May 29 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
React Native项目框架搭建的一些心得体会
May 28 Javascript
node.js中的url.resolve方法使用说明
Dec 10 #Javascript
node.js中的url.parse方法使用说明
Dec 10 #Javascript
node.js中的url.format方法使用说明
Dec 10 #Javascript
node.js中的console.assert方法使用说明
Dec 10 #Javascript
深入分析JSONP跨域的原理
Dec 10 #Javascript
node.js中的console.dir方法使用说明
Dec 10 #Javascript
node.js中的console.error方法使用说明
Dec 10 #Javascript
You might like
php生成略缩图代码
2012/07/16 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python requests 使用快速入门
2017/08/31 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
医院护士的求职信
2014/01/03 职场文书
高三生物教学反思
2014/01/25 职场文书
《钱学森》听课反思
2014/03/01 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
公司运动会策划方案
2014/05/25 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
水知道答案观后感
2015/06/08 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python