qs文档翻译

安装:

npm install qs --save-dev

基本用法:

 1 let qs = require('qs');
 2 let assert = require('assert');
 3 
 4 
 5 //qs.parse('a=c')将字符串等式转换为对象
 6 let obj = qs.parse('a=c');
 7 console.log(obj)//{a:'c'}
 8 
 9 //qs.stringify(obj)将对象转化为字符串等式
10 let str = qs.stringify(obj);
11 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' }

对象嵌套:

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

结果:

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

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

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

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

1 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 选项:将点.变成对象;

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

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

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

如果是空值,也将保留:

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

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

1 qs.parse('a[100]=b')
2 //{ 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'
1 qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })
2  'a=b;c=d'

 

 
posted @ 2018-12-16 11:51  前端极客  阅读(1227)  评论(1编辑  收藏  举报