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 相关文章推荐
JSON 客户端和服务器端的格式转换
Aug 27 Javascript
通过jquery 获取URL参数并进行转码
Aug 18 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
Javascript实现字数统计
Jul 03 Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
Vue Promise的axios请求封装详解
Aug 13 Javascript
12个提高JavaScript技能的概念(小结)
May 09 Javascript
vue中axios实现数据交互与跨域问题
May 12 Javascript
vue服务端渲染操作简单入门实例分析
Aug 28 Javascript
react antd实现动态增减表单
Jun 03 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
ADODB的数据库封包程序库
2006/12/31 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
浅析Git版本控制器使用
2017/12/10 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
python命令 -u参数用法解析
2019/10/24 Python
python实现翻译word表格小程序
2020/02/27 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
中等生评语大全
2014/05/04 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
项目合作协议书
2014/09/23 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
导游词之江南周庄
2019/12/06 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
Mybatis是这样防止sql注入的
2021/12/06 Java/Android