在前端开发中,我们经常需要处理 URL 查询字符串参数。而 qs 就是一个方便的 npm 包,可以帮助我们快速地解析和序列化 URL 查询字符串。
安装
使用 npm 安装:
npm install qs
解析查询字符串
const qs = require('qs'); const paramsString = 'foo=bar&abc=xyz&abc=123'; const params = qs.parse(paramsString); console.log(params); // Output: { foo: 'bar', abc: ['xyz', '123'] }
qs.parse()
方法接收一个查询字符串参数,并返回一个对象,其中包含了该字符串中所有的键和值。如果有重复的键,则会将它们合并为一个数组。
序列化对象为查询字符串
const qs = require('qs'); const obj = { foo: 'bar', abc: ['xyz', '123'] }; const paramsString = qs.stringify(obj); console.log(paramsString); // Output: 'foo=bar&abc%5B0%5D=xyz&abc%5B1%5D=123'
qs.stringify()
方法接收一个对象参数,并返回一个字符串,其中包含了该对象中所有的键和值。如果值是数组,则会使用 []
来表示。注意,这个方法会对字符进行编码,以便于用于 URL 查询字符串中。
指定选项
在默认情况下,qs
会假设传入的查询字符串是基于 application/x-www-form-urlencoded
格式的。但如果你需要使用其他格式,可以通过指定选项来进行配置。
const qs = require('qs'); const paramsString = 'foo=bar;abc=xyz;abc=123'; const options = { delimiter: ';' }; const params = qs.parse(paramsString, options); console.log(params); // Output: { foo: 'bar', abc: ['xyz', '123'] }
这里的 delimiter
选项告诉 qs
使用分号作为键值对之间的分隔符。注意,这个选项只影响解析查询字符串,而不影响序列化对象为查询字符串。
深度解析
默认情况下,qs
只会解析一层嵌套的对象。如果你需要解析更深层次的嵌套对象,可以使用 { depth: Number }
选项。例如:
-- -------------------- ---- ------- ----- -- - -------------- ----- ------------ - -------------------------------------------------------------------------------------- ----- ------- - - ------ - -- ----- ------ - ---------------------- --------- -------------------- -- ------- - ----- - ----- ------- ---- ----- -------- - ----- ---- ------ ------ ---- - - - --展开代码
这里的 depth
选项告诉 qs
最多解析两层嵌套对象。如果你需要解析更多层次,可以将其设置为更大的数值。
总结
qs
是一个方便的 npm 包,可以帮助我们快速地解析和序列化 URL 查询字符串。在使用时,需要注意指定选项来满足自己的需求,例如更改分隔符、深度解析等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/34162