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 相关文章推荐
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
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文本数据库的搜索方法
2006/10/09 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
JS模拟多线程
2007/02/07 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
淘宝客服专员岗位职责
2014/04/11 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
护士实习自荐信
2015/03/06 职场文书
电影圆明园观后感
2015/06/03 职场文书
Golang实现可重入锁的示例代码
2022/05/25 Golang