安装:

npm install qs --save-dev

基本用法:

 let qs = require('qs');
let assert = require('assert'); //qs.parse('a=c')将字符串等式转换为对象
let obj = qs.parse('a=c');
console.log(obj)//{a:'c'} //qs.stringify(obj)将对象转化为字符串等式
let str = qs.stringify(obj);
console.log(str)//a=c

解析对象:

qs.parse(string, [options]);

qs可以通过使用[]在查询字符串中创建嵌套的对象

如:

qs.parse('foo[bar]=baz'

等于:

  foo: {
bar: 'baz'
}

解析URL编码:

qs.parse('a%5Bb%5D=c')

等于:

  a: { b: 'c' }

对象嵌套:

 qs.parse('foo[bar][baz]=foobarbaz'

结果:

 foo: {
bar: {
baz: 'foobarbaz'
}
}

默认情况下,qs可以解析1000个参数,可以通过parameterLimit选项进行设置:

 var limited = qs.parse('a=b&c=d', { parameterLimit: 1 });
// { a: 'b' }

ignoreQueryPrefix:选项,忽略查询字符:

 var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });

结果:

 { a: 'b', c: 'd' }
delimiter分隔符选项:去掉分号:
qs.parse('a=b;c=d', { delimiter: ';' })
//{ a: 'b', c: 'd' }

分隔符可以是正则表达式:

qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ });

//{ a: 'b', c: 'd', e: 'f' }

allowDots 选项:将点.变成对象;

 qs.parse('a.b=c', { allowDots: true });
//{ a: { b: 'c' } }
charset :如果您必须处理旧版浏览器或服务,还支持将百分比编码的八位字节解码为iso-8859-1
 qs.parse('a=%A7', { charset: 'iso-8859-1' }
//{ a: '§' }
解析数组:
qs.parse('a[]=b&a[]=c');
//{ a: ['b', 'c'] }

在解析数组的时候,可以指定index:

 qs.parse('a[1]=c&a[0]=b')
//{ a: ['b', 'c'] }

如果是空值,也将保留:

 qs.parse('a[]=&a[]=b')
//{ a: ['', 'b'] }
 a[0]=b&a[1]=&a[2]=c
// { a: ['b', '', 'c'] }

如果索引超过20,索引将会被看作是key:

 qs.parse('a[100]=b')
//{ a: { '100': 'b' } }

转化为字符串:

qs.stringify(object, [options]);
qs.stringify({ a: 'b' })
//'a=b' qs.stringify({ a: { b: 'c' } })
//a%5Bb%5D=c
 qs.stringify({ a: { b: 'c' } }, { encode: false })
//a[b]=c
qs.stringify({ a: ['b', 'c', 'd'] })
// 'a[0]=b&a[1]=c&a[2]=d'
qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
// 'a=b&a=c&a=d'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 'a[0]=b&a[1]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 'a[]=b&a[]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 'a=b&a=c'
qs.stringify({ a: { b: { c: 'd', e: 'f' } } });
// 'a[b][c]=d&a[b][e]=f'
qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true });
// 'a.b.c=d&a.b.e=f'
qs.stringify({ a: '' })
//a=
qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true })
//'?a=b&c=d'
 qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })
'a=b;c=d'
 

qs文档翻译的更多相关文章

  1. 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的

    感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...

  2. Hibernate 3.3.2 文档翻译 Day01

    Hibernate 3.3.2 文档翻译 翻译人:微冷的雨 第一次书写:2015年11月29日 本人呕心沥血之作,请细心阅读领悟! Day01-1.1 项目描述 微冷的雨翻译:例如,我们将要建立一个可 ...

  3. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

  4. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  5. SQLAlchemy 中文文档翻译计划

    SQLAlchemy 中文文档翻译计划已启动. Python 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质.交流群:467338606. 希望大家能够勇敢地去翻译和改进翻译.虽然我 ...

  6. ZOJ1586 QS Network

    QS Network Time Limit: 2 Seconds      Memory Limit: 65536 KB Sunny Cup 2003 - Preliminary Round Apri ...

  7. Laravel 5.3 中文文档翻译完成

    经过一个多月的紧张翻译和校对,翻译完成.以下是参与人员: Laravel 5.3 中文文档翻译完成 稿源:七星互联www . qixoo.com 文档地址在此:https://laravel-chin ...

  8. 蓝牙4.0——Android BLE开发官方文档翻译

    ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

  9. 2014年QS世界大学排名

    新浪教育[微博]讯 近日2014QS世界大学排行榜发布,榜单前十强均为英美名校.其中麻省理工大学以绝对优势位居榜首:英国剑桥大学及帝国理工学院并列排名第二:哈佛大学较去年而言名次略微下降,跌至第四. ...

随机推荐

  1. VMware Workstation 10.0 简中绿色精简版

    VMware Workstation是强大的虚拟机软件,能在一台机器上同时运行二个或更多Windows.DOS.LINUX系统,并进行开发.测试.部署新的应用程序.VMware10.0 延续VMwar ...

  2. YAML 语言教程(转载)

    用YAML语言读取配置是最快的,之前的suricata中用yaml读取了配置,并且在代码运行期间,对配置进行了维护,所以抽点时间,来了解一下YAML语言编程,下文虽然对YAML语言和JAVAScrip ...

  3. Cobbler的Web管理和维护

    Cobbler的Web管理模块和命令行模块是可以分开工作的,没有依赖关系. 1 WebUI的功能 查看所有的对象和配置文件 添加或者删除system,distro, profile 执行“cobble ...

  4. linux RPM包安装、更新、删除等操作命令简明总结, 如何查看yum安装的软件路径 ?

    rpm -ivh package.rpm 安装一个rpm包rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告rpm -U package.rpm 更新一个 ...

  5. FluentValidation:C#后端输入验证框架的官方文档解读

    参照 FluentValidation 的官方文档写的例子,方便日后查看和使用. 原文:https://github.com/JeremySkinner/FluentValidation/wiki H ...

  6. 一个MVC4 下的验证码用法

    先看一个核心验证码类(不用在意实现过程,直接copy就行),下面包含了两种验证码图片(原理一样),代码如下: using System; using System.Collections.Generi ...

  7. 【Struts2】Struts2获取session的三种方式

    1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = S ...

  8. 【jsp】怎么在jsp文件中引入静态文件(.js .css)

    如果在jsp文件中引入静态文件比如(.js或.css等等),可以在使用 /项目名称/路径 的方式,但是这种方式如果在修改了项目了名称后就显得比较麻烦了.除了之外还许多方式,比如相对路径等等.一般情况下 ...

  9. 【MyBatis】MyBatis之别名typeAliases标签的使用

    <configuration> <typeAliases> <typeAlias alias="Dept" type="cn.xdl.ent ...

  10. Oracle 12C -- in-database archiving

    在同一张表中,通过将row置为inactive状态来实现数据的归档.数据库中,可以对那些inactive row进行压缩优化.在实现归档的同时,应用可以被限制只访问那些active状态的数据.默认情况 ...